2017-04-13 109 views
0

即時嘗試在我的應用程序中使用刪除級聯,也許我沒有做正確的,但我有想法,當我刪除在我的情況下,一個產品automaticlly將刪除與它相關的列。使用onDelete級聯

我的情況:

DB:

products: 
- id_product; 
- status; 

products_translations: 
- id; 
- product_id; 
- name; 
- description; 
- locale; 

我的遷移,使關係和使用級聯刪除:

Schema::table('product_translations', function (Blueprint $table) { 
      $table->foreign('product_id')->references('id')->on('products')->onDelete('cascade'); 
     }); 

控制器在那裏我做了刪除產品:

$product = Product::find($id); 
     $product->delete(); 
     return back(); 
+0

公共職能? –

+0

你在使用softdelete嗎?如果您使用softdelete,註冊表不會被刪除。 – Lourenci

回答

0

我的建議你以其他方式嘗試刪除基於事件。在您的產品型號添加此

protected static function boot() 
{ 
    parent::boot(); 

    static::deleting(function($product) 
    { 
      $product->Translations()->delete(); 

    }); 
} 

記得的hasMany關係添加到產品模型是否使用軟刪除名爲Translations()

+0

你好,我剛剛在模型中添加了基於事件的函數,並且我還有翻譯「hasMany」關係,但給我一個錯誤: Builder.php中的BadMethodCallException行2443: 調用未定義的方法Illuminate \ Database \ Query \ Builder :: detach() – Pedro

+0

yes可能是因爲detach是爲belongstoMany嘗試' - > dissociate()'或者是' - > delete()' –

+0

刪除是我如何在你的回答中做出來的 – Pedro