【发布时间】:2021-12-28 02:44:06
【问题描述】:
我有用户和任务的多对多表以及 user_task。可以为用户分配多项任务。
**User model:**
public function tasks() {
return $this->belongsToMany(Task::class, 'user_task', 'user_uuid', 'task_uuid');
}
**Task Model:**
public function users() {
return $this->belongsToMany(User::class, 'user_task', 'task_uuid', 'user_uuid');
}
**Controller:**
public function store(Request $request) {
$user = auth()->user();
$tasks_uuid = $request->tasks;
$user->tasks()->sync($tasks_uuid);
return response()->json(['message' => 'Submit'], 200);
}
【问题讨论】:
-
一个任务可以属于多个用户吗?如果不是,那么
tasks应该有一个user_id字段,因为它属于用户并且根本不会有数据透视表 -
是的,一个任务可以分配给多个用户。
-
belongsToMany方法调用可以接受比 4 个更多的参数...第五个参数是 'parentKey'...如果您不在这里传递您想要的密钥,它只会使用默认情况下模型的主键,所以如果你想覆盖它并将它用于关系,你需要将第五个参数作为uuid传递
标签: laravel eloquent many-to-many