Grundsätzlich sehen Ihre vier Tabellen so aus:
Mitarbeiter
- Kennung
- ...Ihre Felder
Projekt
- Kennung
- ...Ihre Felder
Beschäftigungen
- Kennung
- ...Ihre Felder
employee_project
- employee_id
- Projekt_ID
- beschäftigungs_id
Sie können das Problem in 2-mal-2-Beziehungen aufteilen:
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')
}
}
Ein 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')
}
}
Ein Beschäftigungsmodell
class Employment extends Model{
public function employees(){
return $this->belongsToMany("Employee")
}
public function projects(){
return $this->belongsToMany("Project")
}
}
An dieser Stelle in Ihrem Controller können Sie Ihre Beziehung verwalten, wenn Sie zum Beispiel zu $Mitarbeiter das Projekt mit der ID 1 mit der Beschäftigung mit der ID 2 hinzufügen möchten, können Sie einfach
$employee->projects()->attach([1 => ['employment_id' => '2']]);
Ich hoffe, diese Antwort auf Ihre Frage.
Wenn Sie Zeitstempel in Ihrer Pivot-Tabelle benötigen, fügen Sie ->withTimesetamps() zu Ihren Beziehungen hinzu.