使用一个命令从数据库中删除多行的最佳方法是什么?
这里我编写了例如:在我的数据库中删除1个产品,但必须先删除具有相同唯一ID的订单
错误:完整性约束违规:1451无法删除或更新 父行:外键约束失败
控制器:
public function DeleteItem($uniqueid){
$purchases = Purchase::where('uniqueid',$uniqueid)->delete();
$product = Product::where('uniqueid',$uniqueid)->delete();
return redirect()->back();;
}
我的代码中有错误,我知道,有人知道如何更改它吗?
如果产品未在没有此行的情况下将其删除:
$purchases = Purchase::where('uniqueid',$uniqueid)->delete();
必须删除前2个其他内容(购买和反馈),如果不存在则忽略其他行并仅删除产品:
public function DeleteItem($uniqueid){
$product = Product::where('uniqueid',$uniqueid)->delete();
return redirect()->back();;
}
谢谢!
答案 0 :(得分:0)
显示的错误来自数据库。它与外键有关。您正在尝试删除具有引用外键的子项的Element。 如果Purchase包含一个或多个产品,请确保在迁移中定义外键时,还指示在删除父项时删除它。
$table->foreign('purchase_id')->references('id')->on('purchases')->onDelete('cascade');
这样,如果你执行Purchase::where('uniqueid',$uniqueid)->delete();
,它也会删除附加到它的产品。
See the documentation