如何在 Laravel 5.5 中实现多个多对多关系?

How can I implement multiple many-to-many relationship in Laravel 5.5?

我正在做一个小的 laravel 项目来实现 Eloquent 关系,我主要有多个模型(项目、任务、用户、文件等)

一个项目可以分配多个用户,附加多个文件,也可以有多个任务。 一个任务可以分配多个用户,也可以分配多个文件,以及其他多个东西。我用谷歌搜索并实现了 hasManyThrough 和 belongsToMany 关系,但我对关系感到很困惑。有帮助吗?

Project.php

class Project extends Model
{

protected $fillable = ['name', 'user_id'];

public function users()
{
    return $this->belongsTo(User::class);
}

public function tasks()
{
    return $this->hasManyThrough(Task::class, User::class);
}
}

Task.php

public function user()
{
    return $this->belongsTo(User::class);
}

User.php

public function tasks()
{
    return $this->hasMany(Task::class);
}

public function project()
{
    return $this->belongsTo(Project::class);
}

我得到的错误是当我转到 projects/1 时,我得到了多个任务,但没有多个用户。

您似乎缺少关键点 table。我会根据你的 tables

做出一些假设

项目、任务、用户、文件

一个用户可以在多个项目上,一个项目可以分配给多个用户。使用任务或文件来获取项目用户是不合逻辑的,除非每个用户都可以访问每个项目并执行任务和上传文件..

但是如果有某种分配过程(用户到项目),您将必须进行调整 table 迁移

类似于:

project_has_user 或 laravel 标准:users_projects

然后您可以在项目和用户模型上实现 belongsToMany 关系

任务 <-> 用户关系是相同的方式...您还应该创建一个 users_tasks 枢轴 table