【问题标题】:How to update or create multiple array in the database如何在数据库中更新或创建多个数组
【发布时间】:2021-01-02 04:56:14
【问题描述】:

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

图片模型包含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)

【问题讨论】:

标签: php sql laravel


【解决方案1】:

查询生成器updateOrCreate 将两个参数作为关联数组:

创建或更新与属性匹配的记录,并用 价值观。

你可以像这样使用它:

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

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

【讨论】:

    【解决方案2】:
    $data = [
        ['title'=>'toyota', 'src'=> 'toyota5487'],
        ['user_id'=>'benz', 'game_id'=> 'benz5487'],
        //...
    ];
    

    雄辩的方法

    Model::insert($data); 
    

    查询生成器方法

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

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

    updateorcreate 接受 2 个参数,一个用作 where 条件,另一个用作插入

    例如:

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

    【讨论】:

      【解决方案3】:

      可以循环每条数据,然后用$image = Image::updateOrCreate($data)一一插入

      【讨论】:

        猜你喜欢
        • 2012-12-24
        • 2011-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-14
        • 1970-01-01
        相关资源
        最近更新 更多