基本的に、4つのテーブルは次のようになります。
従業員
- id
- ...あなたのフィールド
プロジェクト
- id
- ...あなたのフィールド
雇用
- id
- ...あなたのフィールド
employee_project
- employee_id
- project_id
- employee_id
問題を2x2の関係に分割できます:
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に追加する場合は、ID1のプロジェクトとID2の雇用を簡単に追加できます
$employee->projects()->attach([1 => ['employment_id' => '2']]);
私はあなたの質問に対するこの答えを願っています。
ピボットテーブルにタイムスタンプが必要な場合は、リレーションシップに-> withTimesetamps()を追加してください。