laravel如何批量更新数据?总不能嵌套在循环里吧,循环都是要find()查询,比较耗资源
微信里点“发现”,扫一下
二维码便可将本文分享至朋友圈。
具体的需求可以说一下么?如果只是说批量更新,通常使用 insert 方法。
insert 是批量更新,网站有一个带所用标签文章的数量字段count,每次文章使用某个标签时,count字段+1,目前我是用find()查找对应id模型后修改值。因为标签是多选的,目前是嵌套在循环里面,想问一下有没有更好的方法
如果没理解错的话,应该不用 foreach 的,你把相关代码贴上来,看看能不能改善一下
321654
123456
比如说,我想通过一个laravel函数修改 id 为 1,3,5,8,9等稿件的status值改成1 。 我现在通过循环了处理了
public function publish(Request $request){ foreach ($request->get('itemList') as $item){ Article::find($item)->update(['status'=>1]); } }
你这个可以直接 whereIn 试试:
Article::whereIn('id', $request->get('itemList'))->update(['status' => 1]);
这个理论上可以替换你的 foreach 了
谢谢,果然可以用。 我之前写
Article::find($request->get('itemList'))->update(['status'=>1]);
没有成功,还以为不让批量修改
差不多就是上面这个例子,不过如果这个例子是改成status的基础上再加1,那是不是要这样写[‘status’ => ‘status+1’]
status
然后 $request->get(‘itemList’) 来的是数组1,3,5,8,9
请问如果是将ID为1,3,5,8,9的稿件的status分别修改成不同的值怎么处理呢
654321