使用Laravel Eloquent Relationships建立三元关系

时间:2015-09-18 15:00:58

标签: php mysql laravel relational-database

有三个实体:

  • 项目
  • 员工
  • 就业

问题描述:员工可以参与许多项目,每个项目都有一份工作。我希望能够访问某个员工的所有项目和您的工作。

我不确定,但关系必须看起来像三元

enter image description here

物理表尚未定义。所以,可以自由设计(最基本的)它们。

我的问题:

如何使用Laravel Eloquent Relationships构建

2 个答案:

答案 0 :(得分:2)

基本上你的四张桌子就像是:

<强>雇员

  • ID
  • ...你的领域

<强>项目

  • ID
  • ...你的领域

<强>外水

  • ID
  • ...你的领域

<强> employee_project

  • employee_id
  • project_id
  • employment_id

你可以用2对2关系分割问题:

class Employee extends Model{
  public function projects(){
    return $this->belongsToMany("Project")
  }

  // Second relation is Optional in this case
  public function employments(){
    return $this->belongsToMany("Employment", 'employee_project')
  }
}

项目模型

class Project extends Model{
  public function employees(){
    return $this->belongsToMany("Employee")
  }

  // Second relation is Optional in this case
  public function employments(){
    return $this->belongsToMany("Employment",'employee_project')
  }
}

就业模式

class Employment extends Model{
  public function employees(){
    return $this->belongsToMany("Employee")
  }

  public function projects(){
    return $this->belongsToMany("Project")
  }
}

此时在您的控制器中您可以管理您的关系,例如,如果您想要添加到$ employee,ID为1且项目为id 2的项目您可以简单地

$employee->projects()->attach([1 => ['employment_id' => '2']]);

我希望这回答你的问题。

如果您需要在数据透视表中添加时间戳,请在您的关系中添加 - &gt; withTimesetamps()。

答案 1 :(得分:-2)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <table id="myTable"> <tr id="row1"> <td></td> </tr> <tr id="row2"> <td></td> </tr> </table>Employee

EmploymentEmployment