Database 透视表是否可能与另一个表有多对多关系?

Database 透视表是否可能与另一个表有多对多关系?,database,laravel,eloquent,Database,Laravel,Eloquent,假设有一个任务表和一个用户表。一项任务可以通过user\u taskpivot表分配多个用户,pivot表中有一个字段is\u done,该字段指示分配的用户是否已完成任务。到目前为止还不错 现在假设还有一个子任务表,每个任务可以有多个子任务 现在,如果我们还想为每个分配的用户保存分配给他们的子任务,例如在user\u task\u子任务表中 因此,所有表都希望这样: user: [id, name] task: [id, title] subtask: [id, title, task_id]

假设有一个
任务
表和一个
用户
表。一项任务可以通过
user\u task
pivot表分配多个用户,pivot表中有一个字段
is\u done
,该字段指示分配的用户是否已完成任务。到目前为止还不错

现在假设还有一个
子任务
表,每个任务可以有多个子任务

现在,如果我们还想为每个分配的用户保存分配给他们的子任务,例如在
user\u task\u子任务
表中

因此,所有表都希望这样:

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->subtask
的内容来访问用户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?
    }
}
类UserTaskDetails扩展了Pivot
{
公共函数子任务()
{

$this->belongTomany(子任务::类,'user\u task\u Subtask',…)这是个坏主意,我会使用
父任务id
的概念,而不是一个单独的表。因此
任务
表将包含另一个名为
父任务id

的字段,你是什么意思?
子任务
已经有一个字段
任务id
。但我还需要存储哪个用户是assi指定到哪个子任务。这就是为什么我也需要作为
用户任务\u子任务
的原因。这正是我要说的,你不需要创建另一个表,你可以使用
任务
表作为
子任务
唯一的区别是你可以将
父任务id
字段添加到
任务
表中