2017-04-13 57 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