Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Xây dựng mối quan hệ bậc ba bằng Laravel Eloquent Relationships

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ưu điểm của MySQLi so với MySQL

  2. Cải thiện hiệu suất trên truy vấn tìm kiếm toàn văn bản của MySQL

  3. Sự cố khi sử dụng MySQL với AWS Lambda bằng Python

  4. Cách định cấu hình Java Hibernate cho Google Cloud SQL?

  5. PHP - Đặt khóa của mảng truy vấn của tôi làm ID