Laravel 5使用一个命令从数据库中删除多行

时间:2018-01-11 13:08:55

标签: laravel laravel-5

使用一个命令从数据库中删除多行的最佳方法是什么?

这里我编写了例如:在我的数据库中删除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();;

}

谢谢!

1 个答案:

答案 0 :(得分:0)

显示的错误来自数据库。它与外键有关。您正在尝试删除具有引用外键的子项的Element。 如果Purchase包含一个或多个产品,请确保在迁移中定义外键时,还指示在删除父项时删除它。

$table->foreign('purchase_id')->references('id')->on('purchases')->onDelete('cascade');

这样,如果你执行Purchase::where('uniqueid',$uniqueid)->delete();,它也会删除附加到它的产品。 See the documentation