我有将项目记录到项目经理的系统,
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”和“一个项目只能有一个项目”,则需要一对多关系。
Project.php
public function managers()
{
return $this->hasMany('Manager');
}
Manager.php
public function project()
{
return $this->belongsTo('Project');
}
在这种情况下,您需要2个表:一个用于项目,一个用于PM。在PM表中,应该有一个类似于project_id的字段,这是指向projects表中id字段的外键。
情况2
如果“一个项目可以具有多个PM”和“一个项目可以具有多个项目”,那么您需要多对多关系。
Project.php
public function managers()
{
return $this->belongsToMany('Manager');
}
Manager.php
public function projects()
{
return $this->belongsToMany('Project');
}
在这种情况下,您需要3个表:项目表,PM表(在这种情况下没有外键)和所谓的数据透视表,其中包含项目和PM表中的对应ID字段。
您可以在Laravel 4.2 Relationships或Laravel 5.0 Relationships中了解有关关系和模型的更多信息(取决于所使用的版本)。
要创建这些表,可以使用“迁移”。您可以在Laravel 4.2 Migrations或Laravel 5.0 Migrations(取决于您使用的版本)中了解更多信息。
关于php - 什么是正确的关系类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28416407/