我有两个具有一对多连接的模型。例如,让它成为User
ans UserComment
模型。当我调用User::destroy
方法时,我还希望销毁每个UserComment
个实例,其中user_id
字段等于已销毁id
的{{1}}。我可能只是重载User
方法,但我想知道是否有更好的方法来实现这一点。
答案 0 :(得分:1)
是的,最好的方式(或更有效)是通过迁移来实现的。让我们举一个UserComment
和Schema::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();
});
}