从我所看到的,这个应该很简单。
我希望能够从数据库中删除多条记录。我拥有所有我想要删除的记录的id
。我使用逗号分隔的id
列表调用resource.destroy
路由(id
是postgres类型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')
我已经确认find()
返回了一个集合,其中包含与指定id匹配的产品
。
我漏掉了什么吗?
附注:
1. 模型Product
与其他模型有几个belongsTo
关系。
2. 如果我传递一个单一的id
,product.destroy
代码可以正常工作。
编辑 我想知道这两者之间的区别:
$org->products()->find($ids)->delete()
和
$org->products()->whereIn('id', $ids)->get()->delete()
是什么?从我看到的情况,find
和 get
都返回了 Collections
。
destroy()
方法? - maiorano84Model::destroy
来删除产品ID。我更愿意先查找记录(基于用户所属的“organization”),然后再删除它们。我可以使用一个for循环(n个查询)。我也可以使用带有“in”子句的“delete”查询。只是想知道是否有更方便/优雅的方法。 - Code Poet$product->delete(); });```
- edc598