Laravel:如何在两个具有引用表的表之间建立关系

时间:2016-04-21 07:34:42

标签: php mysql laravel laravel-5.2

我有3张桌子。

人员,作业和项目

  

人员表中的每个人都可以分配到一个或多个项目。   “项目”表中的每个项目都可以分配一个或多个人。

以下是每个表的列:

  • ID
  • 名称

作业:

  • person_id
  • PROJECT_ID

项目

  • ID
  • 标题

我的问题是:在我的项目模型中,我该如何定义关系?

我想要的是能够获得分配给特定项目的所有人的姓名。

我需要:

$project->assignedPeople

所以我可以:

foreach($projects as $project)
$project->title
  foreach(projects->assignedPeople as $person)
  $person->name

我需要你的帮助 谢谢!

2 个答案:

答案 0 :(得分:1)

实际上你需要多对多的关系。

您可以像这样定义模型

项目模型

class Project extends Model {

    public function peoples()
    {
        return $this->belongsToMany('App\People');
    }
}

人物模型

class People extends Model {

    public function projects()
    {
        return $this->belongsToMany('App\Project');
    }
}

现在,您可以访问分配给特定项目的所有人员的姓名。

$project->peoples

你可以像这样运行你的foreach循环

foreach($projects as $project) {
    echo $project->title;
    foreach(project->people as $person) {
        echo $person->name;
    }
}

希望它可以解决您的问题。

由于

答案 1 :(得分:0)

Inside Model Project

   class Projects extends Model {

    public function people()
    {
        return $this->hasMany('App\People');
    }

}

Inside Model People

    class People extends Model {

    public function project()
    {
        return $this->belongsToMany('App\Project');
    }

}

In case of custom joining table:

class People extends Model {

    public function project()
    {
        return $this->belongsToMany('App\Project', 'Assignments', 'person_id', 'project_id');
    }

}