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

Php 如何在Laravel 5.5中实现多对多关系?,php,laravel,eloquent,laravel-5.2,Php,Laravel,Eloquent,Laravel 5.2,我正在做一个小型的laravel项目来实现雄辩的关系,我主要有多个模型(项目、任务、用户、文件等) 一个项目可以分配多个用户,附加多个文件,也可以有多个任务。 一个任务可以分配多个用户,也可以分配多个文件,以及多个其他内容。我已经在谷歌上搜索并实现了hasManyThrough和BelongAsymentRelations,但我对这些关系感到困惑。有什么帮助吗 Project.php class Project extends Model { protected $fillable = ['n

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

一个项目可以分配多个用户,附加多个文件,也可以有多个任务。 一个任务可以分配多个用户,也可以分配多个文件,以及多个其他内容。我已经在谷歌上搜索并实现了hasManyThrough和BelongAsymentRelations,但我对这些关系感到困惑。有什么帮助吗

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);
}

我得到的错误是,当我转到项目/1时,我将多个任务附加到它们,但没有多个用户。

似乎您缺少透视表。我会根据你的表格做一些假设

项目、任务、用户、文件

一个用户可以参与多个项目,并且一个项目可以分配多个用户。使用任务或文件获取项目用户是不合理的,除非每个用户都可以访问每个项目、执行任务和上载文件

但是,如果有某种分配过程(用户到项目),则必须进行数据透视表迁移

比如:

项目有用户或在laravel标准中:用户项目

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


任务-用户关系也是这样。。。您还应该创建一个users\u tasks pivot表

首先添加一些代码,不管您做了什么。我用一个语法正确的惊人要求更新了我的答案。您是否应该尝试使用polimorphic关系?用户有很多任务,项目有很多任务,项目有很多用户。看起来多元关系更和谐?你确定吗,伙计?我试着用帖子、视频和评论来表达。我想当你需要一篇文章和一段视频来获得多条评论时,这是很有用的。谢谢,伙计,所以我理解你的观点,即使用任务或文件来获取项目用户没有意义,因此分配过程将是用户将获得由特定角色分配给他们的任务和项目。他们自己无法创建项目/任务。那么,至少您需要users\u tasks透视表。尽管如此,我仍然会使用users\u projects表,这样查询用户就更容易了。但是,如果您想将表保持在最小值,用户任务透视应该足够了,尽管您会使查询变得更复杂一些。。。但是你仍然不能从project->tasks->users获得很多信息。。。因为一个用户可以执行多个任务,而且你不会在用户上有任务id…谢谢你救了我!这就是错误所在。。我的hasManythrough无法通过project->tasks->users工作