如何使用Laravel Eloquent删除多个记录
现在,从我所看到的,这应该很简单。
我希望能够从数据库中删除多个记录。我有我想要删除的所有记录的'我使用逗号分隔的id列表(是postgres类型)来调用路由,如下所示:id
resource.destroy
id
uuid
Request URL:http://foo.app/products/62100dd6-7ecf-4870-aa79-4b132e60c904,c4b369f1-d1ef-4aa2-b4df-b9bc300a4ff5
Request Method:DELETE
另一方面,我的控制器操作如下所示:
public function destroy($id)
{
try {
$ids = explode(",", $id);
$org->products()->find($ids)->delete();
}
catch(...) {
}
}
这给我带来了以下错误:
BadMethodCallException in Macroable.php line 81:
Method delete does not exist.
in Macroable.php line 81
at Collection->__call('delete', array()) in ProductsController.php line 251
at Collection->delete() in ProductsController.php line 251
at ProductsController->destroy('62100dd6-7ecf-4870-aa79-4b132e60c904,c4b369f1-d1ef-4aa2-b4df-b9bc300a4ff5')
我已验证 返回与指定 ID 匹配的集合。find()
products
我错过了什么?
PS:1.该模型与其他模型有几种关系。2.如果我传递一个代码,代码工作正常Product
belongsTo
product.destroy
id
编辑我想,我也试图理解两者之间的区别:
$org->products()->find($ids)->delete()
和
$org->products()->whereIn('id', $ids)->get()->delete()
是?据我所知,两者都在回归find
get
Collections