在Laravel中销毁具有所有依赖性的模型实例

时间:2017-02-09 08:43:50

标签: laravel laravel-5

我有两个具有一对多连接的模型。例如,让它成为User ans UserComment模型。当我调用User::destroy方法时,我还希望销毁每个UserComment个实例,其中user_id字段等于已销毁id的{​​{1}}。我可能只是重载User方法,但我想知道是否有更好的方法来实现这一点。

2 个答案:

答案 0 :(得分:1)

是的,最好的方式(或更有效)是通过迁移来实现的。让我们举一个UserCommentSchema::create('usercomments', function(Blueprint $table){ $table->integer('user_id')->unsigned(); .... $table->foreign('user_id', 'fk_user_id') ->references('id') ->on('users') ->onDelete('cascade') ->onUpdate('cascade'); //not needed in your case. }); 的例子。保持用户迁移不变。对于UserComment,请执行以下操作:

{{1}}

好的,我好久没用过了,所以你可以在线查看语法。但这就是它的要点。

当您删除用户时,您的所有评论都将被您的数据库自动删除。

Goodluck伙伴!

答案 1 :(得分:1)

我会使用数据库(如上所述由EddyTheDove),但如果你不想使用数据库......你可以在User模型的删除事件中添加一些东西。

实施例

protected static function boot() {
    parent::boot();
    static::deleting(function($user) {
         $user->user_comments()->delete();
    });
}