我需要删除产品的所有关系。当我试图删除具有关系的项目时,我遇到了错误。下面是我的代码:
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:调用未定义方法阐明' '数据库查询' Builder::数据()
如果产品没有ProductFieldData,我得到这个错误。但我认为它必须跳过如果没有关系的数据?
如何删除产品所有关系?
试试这个:
foreach ($product->Field()->Data as $data) {
$data->delete();
}
你正在处理一个集合,你不能在一个集合上执行delete函数,所以你必须迭代它。
顺便说一下,你不应该使用ON DELETE CASCADE
吗?你应该做一些研究,这会节省你很多时间!