簡體   English   中英

刪除Laravel中所有關系的最佳實踐是什么?

[英]What is the best practice to delete all relationships in Laravel?

我需要刪除產品的所有關系。 嘗試刪除具有關系的項目時出現錯誤。 這是我的代碼:

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:調用未定義的方法Illuminate \\ Database \\ Query \\ Builder :: Data()

如果產品沒有ProductFieldData,則會出現此錯誤。 但是我認為,如果沒有關系數據,必須跳過它?

如何刪除產品的所有關系?

嘗試這個:

foreach ($product->Field()->Data as $data) {
    $data->delete();
}

您正在處理一個集合,並且無法對項目集合執行刪除功能,因此必須對其進行迭代。

順便說一句,您不應該使用ON DELETE CASCADE來執行此操作嗎? 您應該對此進行一些研究,它將節省大量時間!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM