【发布时间】:2020-09-17 03:36:38
【问题描述】:
假设有一个tasks 表和一个user 表。一个任务可以通过user_task 数据透视表分配多个用户,该数据透视表有一个字段is_done,用于告知分配的用户是否已完成该任务。到目前为止一切顺利。
现在假设还有一个subtasks 表,每个任务可以有多个子任务。
现在,如果我们还想为每个分配的用户保存他们被分配到的子任务,例如在user_task_subtask 表中。
所以所有的表格都会是这样的:
user: [id, name]
task: [id, title]
subtask: [id, title, task_id]
user_task: [id, user_id, task_id, is_done]
user_task_subtask: [user_task_id, subtask_id]
使用 eloquent,我假设我可以键入 $task->users()->where('user_id', 1)->pivot->subtasks 之类的内容来访问用户 1 的所有子任务以执行此特定任务。我试过这个:
class Task extends Model
{
public function users()
{
return $this
->belongsToMany(User::class)
->as('userdetails')
->withPivot('is_done')
->using(UserTaskDetails::class);
}
}
然后在枢轴上添加一个额外的关系:
class UserTaskDetails extends Pivot
{
public function subtasks()
{
$this->belongsToMany(Subtask::class, 'user_task_subtask', ...); // <-- what to write here exactly?
}
}
但我无法让这个subtasks 关系正常工作。谁能帮帮我?
【问题讨论】: