什么是正确的关系类型

时间:2015-02-09 18:08:54

标签: php mysql laravel relational-database eloquent

我有将项目记录到项目经理的系统,

  

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 个答案:

答案 0 :(得分:0)

案例1。

如果&#34;一个项目可以有多个PM&#34; &#34;一个PM只能有一个项目&#34; - 您需要<强>一对多关系。

<强> 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。

如果&#34;一个项目可以拥有多个PM&#34; &#34;一个PM可以拥有多个项目&#34; - 那么您需要<强大>多对多关系。

<强> 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 RelationshipsLaravel 5.0 Relationships中学习的关系和模型的更多信息(取决于您使用的版本)。

要创建这些表格,您可以使用迁移。您可以在Laravel 4.2 MigrationsLaravel 5.0 Migrations中了解详情(具体取决于您使用的版本)。