删除Laravel中所有关系的最佳做法是什么?

时间:2016-08-30 06:36:15

标签: php laravel laravel-5.1

我需要删除所有产品关系。当我尝试删除带有关系的项目时出错。这是我的代码:

public function getDelete(Product $product)
{
    $name = $product->name;

    $product->Field()->Data()->delete();
    $product->Field()->delete();
    $product->delete();

    return redirect('products')->with('success', 'Product <b>'.$name.'</b> successfully deleted.');
}

以下是型号:

public function Field()
{
    return $this->hasMany("\App\ProductField", 'product_id','id');
}

public function Data()
{
    return $this->hasMany("\App\ProductFieldData", 'product_field_id','id');
}
  

Builder.php第2101行中的BadMethodCallException:调用undefined   方法Illuminate \ Database \ Query \ Builder :: Data()

我得到的这个错误如果产品没有ProductFieldData。但是,如果没有关系数据,我认为必须跳过它?

如何删除产品的所有关系?

1 个答案:

答案 0 :(得分:0)

试试这个:

ON DELETE CASCADE

您正在处理集合,而您无法对项目集合执行删除功能,因此您必须对其进行迭代。

顺便说一句,你不应该使用{{1}}吗?你应该做一些研究,它会为你节省很多时间!