Basicamente suas quatro tabelas serão algo como:
funcionário
- código
- ...seus campos
projeto
- código
- ...seus campos
empregos
- código
- ...seus campos
employee_project
- employee_id
- id_projeto
- employment_id
Você pode dividir o problema em 2 por 2 relações:
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')
}
}
Um modelo de projeto
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')
}
}
Um modelo de emprego
class Employment extends Model{
public function employees(){
return $this->belongsToMany("Employee")
}
public function projects(){
return $this->belongsToMany("Project")
}
}
Neste ponto em seu controller você pode gerenciar sua relação, por exemplo se você quiser adicionar a $employee, o projeto com id 1 com o job com id 2 você pode simplesmente
$employee->projects()->attach([1 => ['employment_id' => '2']]);
Espero que esta resposta à sua pergunta.
Se você precisar de timestamps em sua tabela dinâmica, adicione ->withTimesetamps() aos seus relacionamentos.