模型 Laravel 中的外键与 hasMany()

问题描述 投票:0回答:1

用户有很多任务,id在任务表中添加外键引用用户,如果我想删除用户,我想删除该用户的所有任务,我在控制器中执行此操作

task::where('user_id',$user_id)->delete();
user::where('id',$user_id)->delete();

但是还有另一种说法

public function tasks()
{
    return $this->hasMany('App\Task');
}

在控制器中:

$user = User::find($id);
$user->tasks()->delete();
$user->delete();

其中一种方法的性能优于另一种方法吗???

什么比较好?????????????

laravel eloquent model controller
1个回答
0
投票

为了获得更好的性能,请使用 onDeleteCascade,它允许数据库自动执行此操作。您可以将其添加到迁移文件中。完成后只需删除用户,他的任务就会自动删除

任务迁移中

$table->foreignId('user_id')->constrained('users')->cascadeOnDelete();
© www.soinside.com 2019 - 2024. All rights reserved.