如何在 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
我正在做一个小的 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