如何在数据库中更新或创建多个数组

时间:2020-09-15 12:22:49

标签: php sql laravel

如何在数据库中更新或创建此数组?

图像模型包含id,title,src和

$data =[
          ["title"  => "toyota",  
           "src"    => "toyota5487"],
          ["title"  => "benz",
           "src"    => "benz5487"  ],
          ["title"  => "benz",
           "src"    => "benz5487"]
        ];
Image::updateOrCreate($data);

错误:Illuminate \ Database \ QueryException SQLSTATE [42S22]:列不 找到:1054'where子句'中的未知列'toyota'(SQL:select * 来自images,其中(toyota = toyota5487和benz = benz5487) 限制1)

3 个答案:

答案 0 :(得分:0)

查询构建器updateOrCreate采用两个参数作为关联数组:

创建或更新与属性匹配的记录,并填充 值。

您可以像这样使用它:

$data =[
          ["title"  => "toyota",  
           "src"    => "toyota5487"],
          ["title"  => "benz",
           "src"    => "benz5487"  ],
          ["title"  => "benz",
           "src"    => "benz5487"]
        ];
  foreach ($data as $item)
        {
            Image::updateOrCreate($item);
        }

请注意,如果第二个参数与第一个相同,则可以忽略它。

答案 1 :(得分:0)

$data = [
    ['title'=>'toyota', 'src'=> 'toyota5487'],
    ['user_id'=>'benz', 'game_id'=> 'benz5487'],
    //...
];

雄辩的做法

Model::insert($data); 

查询构建器方法

DB::table('table')->insert($data);

使用上述方法,您可以在一个查询中插入多个条目。

updateorcreate接受2个参数,其中一个用作条件,其他插入

例如:

// If there's a flight from Oakland to San Diego, set the price to $99.
// If no matching model exists, create one.
$flight = Flight::updateOrCreate(
    ['departure' => 'Oakland', 'destination' => 'San Diego'],
    ['price' => 99]
);

答案 2 :(得分:0)

您可以循环每个数据,然后使用$image = Image::updateOrCreate($data)

一次插入