In principe zullen uw vier tabellen er ongeveer zo uitzien:
werknemer
- id
- ...uw velden
project
- id
- ...uw velden
werkgelegenheid
- id
- ...uw velden
employee_project
- employee_id
- project_id
- employment_id
Je kunt het probleem in 2 bij 2 relaties splitsen:
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')
}
}
Een projectmodel
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')
}
}
Een werkgelegenheidsmodel
class Employment extends Model{
public function employees(){
return $this->belongsToMany("Employee")
}
public function projects(){
return $this->belongsToMany("Project")
}
}
Op dit punt in uw controller kunt u uw relatie beheren, bijvoorbeeld als u aan $employee het project met id 1 wilt toevoegen met het dienstverband met id 2 kunt u eenvoudig
$employee->projects()->attach([1 => ['employment_id' => '2']]);
Ik hoop dat dit antwoord op uw vraag.
Als u tijdstempels in uw draaitabel nodig heeft, voegt u ->withTimesetamps() toe aan uw relaties.