首页 > 解决方案 > 将数组输入到 firstOrCreate 会产生错误 Laravel 5.7

问题描述

我正在使用以下代码在我的控制器上运行 firstOrCreate:

private function validateNumberBD($areaCodes,$numbers){
    $arrayAreaCodes = array();
    foreach ($areaCodes as $key => $value) {
        $arrayAreaCodes[] = $value->AREACODES_ID;
    }

    $consultArray = array();

    for($i = 0; $i < count($numbers); $i++){
        for($j = 0; $j < count($arrayAreaCodes);$j++){

            $consultArray[] = (['PHONE' => $numbers[$i],'AREACODES_ID' => $arrayAreaCodes[$j]]);


        }

    }
    //dd($consultArray);


    $searchOrCreate = Phone::firstOrCreate($consultArray);



}

由于执行该代码会产生以下错误,因此产生了我的问题:

在此处输入图像描述

如果我对我的 $consultArray 变量执行 dd (),它会显示以下数组

在此处输入图像描述

如果我更改数组值的位置,我会收到此错误: 在此处输入图像描述

咨询新阵列将如下所示。 在此处输入图像描述

我认为我的错误在于如何列出数据,但我真的不知道还能做什么。

在查询模式下,如何知道 firstOrCreate 为我创建了多少个值?

标签: mysqllaraveleloquentlaravel-5.7

解决方案


firstOrCreate 无法检查或插入多条记录,并且您正在发送一个数组数组。

for($i = 0; $i < count($numbers); $i++){
        for($j = 0; $j < count($arrayAreaCodes);$j++){
            $searchOrCreate = Phone::::firstOrCreate(
            ['PHONE' => $numbers[$i], 'AREACODES_ID' => $arrayAreaCodes[$j]]);
        }
    }

这可以工作。


推荐阅读