Mối quan hệ một đến nhiều của Laravel với bảng tổng hợp

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
4

Hiệ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
6

Bâ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

Chủ Đề