【问题标题】:What is the correct type of relationship什么是正确的关系类型
【发布时间】:2015-02-09 18:08:53
【问题描述】:

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

1 个项目可以有多个项目经理

项目经理本质上只是系统用户,也许我脑子有问题,但我正在努力找出正确的关系来获取我需要的数据,我想要的是获取数据库、项目详细信息以及每个项目经理的用户详细信息。

我设想这是一个 1:n 的关系,但我似乎无法获得我想要的数据,我正在使用 eloquent 来获取我的关系并加载数据,这是我的模型,

Project.php

public function projectmanager() {
    return $this->belongsToMany('User');
}

User.php

public function projectmanager() {
    return $this->belongsTo('Project');
}

但这似乎没有意义,在我的脑海中,我感觉我需要我的项目表、用户表,然后是另一个存储 ID、用户 ID 和项目 ID 的表。

也许有人可以指出我正确的方向,因为我现在只是让自己感到困惑

【问题讨论】:

    标签: php mysql laravel relational-database eloquent


    【解决方案1】:

    案例 1。

    如果“一个项目可以有多个 PM”“一个 PM 只能有一个项目” - 你需要 一对多 关系。

    Project.php

    public function managers()
    {
        return $this->hasMany('Manager');
    }
    

    Manager.php

    public function project()
    {
        return $this->belongsTo('Project');
    }
    

    在这种情况下,您需要两张表:一张用于项目,一张用于 PM。在 PMs 表中应该有一个类似 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 表(在这种情况下没有外键)和所谓的数据透视表,它保存项目和 PMs 表中相应的 id 字段。

    更多关于你可以学习的关系和模型:

    取决于您使用的版本。

    要创建这些表,您可以使用迁移。您可以在以下位置了解更多信息:

    取决于您使用的版本。

    【讨论】:

      猜你喜欢
      • 2011-10-02
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2017-12-19
      • 2010-12-20
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多