如何在Laravel4中级联软件?

Red*_*ash 12 cascading-deletes laravel eloquent laravel-4

尝试使用删除级联和softDeletes的外键没有太多运气.

我有2个表:用户,事件.两个表都有softDeletes.

用户可以拥有0..n个活动.
事件有一个user_id,用作用户的外键,如下所示:

$table->foreign('user_id')->references('id')->on('users')->onDelete('CASCADE')->onUpdate('CASCADE');
Run Code Online (Sandbox Code Playgroud)

问题是,当我删除用户时,它会被软删除,但其事件不会 - 软删除或物理删除.

我做错了什么,或者这是正确的雄辩行为?

其次,如果这是正确的行为,如何最好地实现删除级联?也许覆盖我的模型中的delete()方法,就像这样......

public function delete()
{
  //delete all events...
  __parent::delete()
}
Run Code Online (Sandbox Code Playgroud)

Ake*_*rts 11

DB的外键不会执行任何操作,因为您尚未更改有问题的主键.仅当您更新或删除主键时,才会修改相关行.

从我能找到的有关此主题的所有内容中,解决方案是使用Eloquent的模型事件来侦听删除事件,并更新相关表.

这是关于它的一个StackOverflow问题.

或者,您可以"扩展" delete()方法并直接包含功能.这是一个例子.