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


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

要创建这些表,可以使用“迁移”。您可以在Laravel 4.2 MigrationsLaravel 5.0 Migrations(取决于您使用的版本)中了解更多信息。

关于php - 什么是正确的关系类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28416407/

10-11 00:56
查看更多