我正在制作一个小型的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 回答
好像你缺少数据透视表一样 . 我会根据你的表做出一些假设
项目,任务,用户,文件
用户可以在多个项目上,项目可以分配多个用户 . 使用任务或文件来获取项目用户是不合逻辑的,除非每个用户都可以访问每个项目并执行任务和上传文件 .
但是,如果存在某种分配过程(用户对项目),则必须进行数据透视表迁移
就像是:
project_has_user或laravel标准:users_projects
然后,您可以在项目和用户模型上实现
belongsToMany
关系任务< - >用户关系的方式相同......您还应该创建一个users_tasks数据透视表