我正在尝试使用laravel模型对许多记录进行更新或创建操作。 带有updateOrCreate的普通插入与foreach完美配合,但是由于它减慢了速度,我想避免使用它。 我有大约200,000条记录。 有什么办法可以达到目的吗? 我在下面尝试了这个答案 https://stackoverflow.com/a/34815725/1239122 但这不是超级优雅。 蚂蚁的想法?
答案 0 :(得分:0)
据我所知,您无法检查更新的条件,但是您可以执行插入操作
$data = array(
array('name'=>'John', 'phone'=>'1234567890'),
array('name'=>'Deo', 'phone'=>'9876543210'),
//...
);
Model :: insert($ data);
答案 1 :(得分:0)
插入并更新您可以这样做
datas[] //base array
foreach($Data as $key => $datas){ //loop
$model = new Model; //create new variable of inserting model
$model->fill( $Data ); // fill data into array
$model->save(); // save the data
}
答案 2 :(得分:0)
您可以在查询生成器中使用insert()
进行批量插入。但是更新语句需要条件。请阅读文档:
https://laravel.com/docs/5.7/eloquent#updates
答案 3 :(得分:0)
您可以尝试使用该库进行批量插入和更新。
答案 4 :(得分:0)
我找不到在一个查询中批量插入或更新的方法。但是我只处理了3个查询。我有一个表名 <div className="row ">
<div className="col-md-5 order-md-2">LOGO</div>
<div className="col-md-7 order-md-1">TITLE</div>
</div>
。在这里,我想针对运输区域更新运输成本。该表shipping_costs
,id
,area_id
,cost
,created_at
中只有5列。
updated_at
答案 5 :(得分:0)
Laravel 8 在查询构建器 upsert 中有一个 on system 函数。