Grundlæggende vil dine fire borde være noget som:
medarbejder
- id
- ...dine felter
projekt
- id
- ...dine felter
beskæftigelser
- id
- ...dine felter
medarbejder_projekt
- employee_id
- projekt_id
- employment_id
Du kan opdele problemet i 2 gange 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 projektmodel
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 beskæftigelsesmodel
class Employment extends Model{
public function employees(){
return $this->belongsToMany("Employee")
}
public function projects(){
return $this->belongsToMany("Project")
}
}
På dette tidspunkt i din controller kan du administrere din relation, for eksempel hvis du vil tilføje til $employee, projektet med id 1 med ansættelsen med id 2 kan du ganske enkelt
$employee->projects()->attach([1 => ['employment_id' => '2']]);
Jeg håber, at dette svar på dit spørgsmål.
Hvis du har brug for tidsstempler i din pivottabel, skal du tilføje ->withTimesetamps() til dine relationer.