如何使用Query Builder批量删除?无需foreach与Eloquent(基于ID数组)
当然可行!这是高效批量删除的推荐做法
完全不需要使用foreach循环或者Eloquent模型实例,通过Query Builder就能实现单次查询批量删除指定ID的数据,还能避免多次数据库请求的开销。
不过你给出的代码存在两个小问题:
- 数组定义错误:同一个数组里重复使用
"id"键,最终只会保留最后一个值,而且语法也有问题(缺少闭合的]和;) delete()方法的用法不对:直接传数组给delete()并不能实现批量删除,这个方法如果传参数的话,仅支持单个主键值
正确的实现代码:
首先整理好要删除的ID列表(直接存ID值即可,不需要嵌套数组):
$ids = [8, 9];
然后使用whereIn()配合delete(),生成单次DELETE查询:
DB::table('table_name')->whereIn('id', $ids)->delete();
这条代码会生成并执行如下SQL语句:
DELETE FROM `table_name` WHERE `id` IN (8, 9)
这样就完美满足你的需求:没有循环、不用Eloquent,仅一次数据库查询就完成批量删除操作。
内容的提问来源于stack exchange,提问作者mohsin
相关产品推荐
相关产品推荐

