首页 文章

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

提问于
浏览
1

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

项目可以分配多个用户,附加多个文件,也可以有多个任务 . 并且单个任务可以分配多个用户,并且还可以分配多个文件以及多个其他内容 . 我用google搜索并实现了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);
}

我得到的错误是当我去项目/ 1我得到多个任务附加到他们而不是多个用户 .

1 回答

  • 0

    好像你缺少数据透视表一样 . 我会根据你的表做出一些假设

    项目,任务,用户,文件

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

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

    就像是:

    project_has_user或laravel标准:users_projects

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

    任务< - >用户关系的方式相同......您还应该创建一个users_tasks数据透视表

相关问题