我有一个系统,可以将项目记录给项目经理,
1个项目可以有多个项目经理
项目经理本质上只是系统用户,也许我脑子里有个屁,但我正在努力找出正确的关系,以获得我需要的数据,我想要的是获得每个项目经理的数据库、项目详细信息和用户详细信息。
我设想这是一个1:n的关系,但我似乎无法获得我想要的数据,我正在使用雄辩的方法来获取我的关系并加载数据,以下是我的模型,
Project.php
public function projectmanager() {
return $this->belongsToMany('User');
}
User.php
public function projectmanager() {
return $this->belongsTo('Project');
}
但这似乎没有意义,在我的脑海中,我感觉我需要我的项目表、用户表,然后是一个存储和ID、用户ID和项目ID的表。
也许有人可以给我指明正确的方向,因为我现在只是在困惑自己。
案例1
如果";一个项目可以具有多个PM"和";一个PM只能有一个项目"-您需要一对多关系。
Project.php
public function managers()
{
return $this->hasMany('Manager');
}
Manager.php
public function project()
{
return $this->belongsTo('Project');
}
在这种情况下,您需要两个表:一个用于项目,一个用于PM。在PM表中应该有一个类似project_id的字段,它是指向projects表中id字段的外键。
案例2
如果";一个项目可以具有多个PM"和";一个PM可以有多个项目"-那么您需要多对多关系。
Project.php
public function managers()
{
return $this->belongsToMany('Manager');
}
Manager.php
public function projects()
{
return $this->belongsToMany('Project');
}
在这种情况下,您需要3个表:projects表、PMs表(在本例中没有外键)和所谓的pivot表,它们保留了来自projects表和PMs表的相应id字段。
更多关于关系和模型的信息,您可以在中学习
- Laravel 4.2关系
- Laravel 5.0关系
- Laravel 6.x关系
- Laravel 7.x关系
- Laravel 8.x关系
取决于您使用的版本。
要创建这些表,可以使用迁移。您可以在以下位置了解更多信息:
- Laravel 4.2迁移
- Laravel 5.0迁移
- Laravel 6.x迁移
- Laravel 7.x迁移
- Laravel 8.x迁移
取决于您使用的版本。