Dina fyra bord kommer i princip att vara något i stil med:
anställd
- id
- ...dina fält
projekt
- id
- ...dina fält
anställningar
- id
- ...dina fält
employee_project
- employee_id
- projekt-id
- anställnings-id
Du kan dela problemet i 2 gånger 2 relationer:
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')
}
}
En projektmodell
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')
}
}
En anställningsmodell
class Employment extends Model{
public function employees(){
return $this->belongsToMany("Employee")
}
public function projects(){
return $this->belongsToMany("Project")
}
}
Vid denna punkt i din controller kan du hantera din relation, till exempel om du vill lägga till $employee, projektet med id 1 med anställningen med id 2 kan du helt enkelt
$employee->projects()->attach([1 => ['employment_id' => '2']]);
Jag hoppas att detta svar på din fråga.
Om du behöver tidsstämplar i din pivottabell, lägg till ->withTimesetamps() till dina relationer.