Về cơ bản bốn bảng của bạn sẽ giống như sau:
nhân viên
- id
- ... các lĩnh vực của bạn
dự án
- id
- ... các lĩnh vực của bạn
việc làm
- id
- ... các lĩnh vực của bạn
worker_project
- worker_id
- project_id
- job_id
Bạn có thể chia vấn đề thành 2 theo 2 quan hệ:
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')
}
}
Một mô hình dự án
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')
}
}
Một mô hình việc làm
class Employment extends Model{
public function employees(){
return $this->belongsToMany("Employee")
}
public function projects(){
return $this->belongsToMany("Project")
}
}
Tại thời điểm này trong bộ điều khiển của bạn, bạn có thể quản lý mối quan hệ của mình, ví dụ:nếu bạn muốn thêm vào $ worker, dự án có id 1 với việc làm với id 2, bạn có thể chỉ cần
$employee->projects()->attach([1 => ['employment_id' => '2']]);
Tôi hy vọng câu trả lời này cho câu hỏi của bạn.
Nếu bạn cần dấu thời gian trong bảng tổng hợp, hãy thêm -> withTimesetamps () vào các mối quan hệ của bạn.