V zásadě budou vaše čtyři stoly něco jako:
zaměstnanec
- id
- ...vaše pole
projekt
- id
- ...vaše pole
zaměstnání
- id
- ...vaše pole
projekt_zaměstnance
- id_employee
- id_projektu
- id_employment
Problém můžete rozdělit na vztahy 2:2:
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')
}
}
Model projektu
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')
}
}
Model zaměstnanosti
class Employment extends Model{
public function employees(){
return $this->belongsToMany("Employee")
}
public function projects(){
return $this->belongsToMany("Project")
}
}
V tomto okamžiku ve svém kontroléru můžete spravovat svůj vztah, například pokud chcete přidat k $employee, projekt s ID 1 se zaměstnáním s ID 2, můžete jednoduše
$employee->projects()->attach([1 => ['employment_id' => '2']]);
Doufám, že tato odpověď na vaši otázku.
Pokud potřebujete časová razítka v kontingenční tabulce, přidejte do svých vztahů ->withTimesetamps().