【问题标题】:Entering an array to the firstOrCreate generates an error Laravel 5.7向 firstOrCreate 输入数组会产生错误 Laravel 5.7
【发布时间】:2019-09-06 15:11:29
【问题描述】:

我正在使用以下代码在我的控制器上运行 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为我创建了多少个值?

【问题讨论】:

  • 您是否将列添加到Phone::$fillable
  • 是的,$primaryKey = 'PHONES_ID

标签: mysql laravel eloquent laravel-5.7


【解决方案1】:

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]]);
        }
    }

这可以工作。

【讨论】:

  • 我是从这个意义上想象的,但是按照您的解释方式,我们根据我的代码本身的功能谈论了对数据库的 1000 多个查询。这就是为什么我尝试使用 firstOrCreate
  • 是的,我知道。也许您可以签出 insertOrIgnore() 方法。它应该适用于数据数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 2014-10-31
  • 2016-11-12
相关资源
最近更新 更多