Laravel cung cấp các hệ thống Object Relational Mapping đẹp nhất mà tôi từng sử dụng với Eloquent. Eloquent có rất nhiều tính năng mạnh mẽ giúp làm việc với cơ sở dữ liệu trở nên thú vị. Một trong những tính năng yêu thích của tôi về Laravel Eloquent là cấu trúc mối quan hệ nhiều-nhiều. Khi tôi phải viết SQL thô, tôi luôn ghét mối quan hệ nhiều-nhiều. Với Eloquent, chúng thật dễ dàng
Trong hướng dẫn này, chúng ta sẽ thực hiện một số phương pháp yêu thích của tôi khi cập nhật và tạo mối quan hệ nhiều-nhiều với Laravel Eloquent. Có rất nhiều phương pháp cơ bản và hữu ích khác có sẵn cho
Tuy nhiên, tôi luôn hơi bối rối khi tạo và cập nhật dữ liệu liên quan nên tôi đã viết hướng dẫn này như một hướng dẫn cho chính mình và cho bạn. Tôi có xu hướng sử dụng rất nhiều trong số này để thiết lập Cổng & Chính sách và các cấu trúc cấp phép khác trong Laravel
Thiết lập mối quan hệ nhiều-nhiều với Laravel Eloquent
Đối với ví dụ này, chúng tôi sẽ sử dụng một tình huống thực tế mà chúng tôi đã gặp khi xây dựng Bugflow. Đó là quản lý quyền của người dùng đối với các dự án và tổ chức. Đối với ví dụ này, mọi người dùng có thể thuộc về nhiều dự án và nhiều tổ chức. Trên mỗi dự án và tổ chức, người dùng có quyền. Chúng sẽ được lưu trữ trong bảng tổng hợp cùng với mối quan hệ với dự án. Hãy thiết lập điều này
Đầu tiên, chúng tôi sẽ tạo 3 bảng trong Cài đặt Laravel của chúng tôi. Các bảng sẽ là
projects
id
name
6 , projects
id
name
7 và projects
id
name
8. Để đơn giản, tôi sẽ không thêm MỌI trường, chỉ đủ để đảm bảo hướng dẫn này có ý nghĩaỞ cấp độ cơ bản nhất, bảng
projects
id
name
6 của chúng ta sẽ giống nhưusers
id
name
Bảng
projects
id
name
7 của chúng ta sẽ trông giống nhưprojects
id
name
Và bảng
projects
id
name
8 của chúng ta sẽ trông giống như________số 8_______Chú ý cột
users_projects
user_id
project_id
permission
2 trên bảng projects
id
name
8? . Trong các tài liệu tham khảo sau này, bảng này còn được gọi là bảng users_projects
user_id
project_id
permission
4Hiện tại, các giá trị của cột
users_projects
user_id
project_id
permission
2 có thể là users_projects
user_id
project_id
permission
6 hoặc users_projects
user_id
project_id
permission
7. Tôi sẽ ghi lại cách cập nhật giá trị này một cách hiệu quả. Khi tạo bảng, tôi luôn đặt mặc định cột users_projects
user_id
project_id
permission
2 là users_projects
user_id
project_id
permission
7. Bằng cách này, chúng tôi chỉ có thể trực tiếp đặt giá trị này nếu cần và không vô tình tạo người dùng có quyền users_projects
user_id
project_id
permission
6Bây giờ chúng ta đã xây dựng các bảng của mình, hãy xác định các mối quan hệ của chúng ta trong các mô hình Eloquent