Trong cuốn sách nguồn này, chúng ta sẽ nghiên cứu khái niệm hàm sync[] của Laravel. Trong khi làm việc với Laravel, chúng ta cần giới thiệu một bảng trung gian được gọi là bảng
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com0 theo thuật ngữ của Laravel. Và để thực hiện các thao tác trên bảng này chúng ta cần sử dụng các phương thức, là một trong số đó. Hãy khám phá nó sâu hơnMục lục
01 Sử dụng đồng bộ hóa trong Laravel
Phương thức chấp nhận một mảng làm đối số. Như tên gợi ý, phương thức này đồng bộ hóa các mục cơ sở dữ liệu có nghĩa là bất cứ điều gì bạn chuyển vào phương thức này, những bản ghi đó sẽ được lưu vào cơ sở dữ liệu và phần còn lại sẽ bị xóa khỏi bảng trung gian [trục]
02 Ví dụ về đồng bộ hóa trong Laravel
Giả sử trong dự án của chúng tôi, chúng tôi cần xác định vai trò của mọi người dùng. Vì vậy, người dùng có thể có nhiều vai trò và vai trò nghịch đảo có thể có nhiều người dùng. Vì vậy, nó sẽ là một mối quan hệ Many To Many
Để làm được điều này chúng ta cần tạo 3 bảng
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com1,
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com2 và bảng trung gian
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com3. Bảng
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com3 sẽ có cột
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com5 và
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com6 kết nối cả bảng người dùng và vai trò và bảng trung gian này được gọi là bảng tổng hợp
Đây là cấu trúc bảng
users id - integer name - string roles id - integer name - string role_user user_id - integer role_id - integer
Chúng tôi có các dữ liệu sau trong cơ sở dữ liệu của chúng tôi
người dùng
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com
vai diễn
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:32
role_user
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com0
Ví dụ: Như bạn có thể thấy trong bảng
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com3, người dùng có
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com8 có 3 vai trò,
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com9,
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:320 và
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:321. Bây giờ, chúng tôi muốn xóa vai trò
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:320 và
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:321 cho người dùng đó nhưng chúng tôi muốn giữ lại vai trò
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com9
Bảng
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com3 của chúng tôi trước khi vận hành
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:326
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com1
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com2
Sau khi thực hiện thao tác trên, bảng
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com3 của chúng ta sẽ như bên dưới
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com4
03 Truyền các tham số bổ sung đồng bộ hóa
Đôi khi, chúng tôi có thể cần chuyển một số dữ liệu bổ sung trong khi đồng bộ hóa. Ví dụ: tôi muốn lưu trữ trạng thái hết hạn cho người dùng duy nhất có
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:328 thì bạn có thể làm như bên dưới
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com6
04 Phương thức syncWithPivotValues[] trong Laravel
Nếu bạn muốn chèn thêm dữ liệu cho tất cả các ID mà không muốn sử dụng cách trên mất thời gian viết code và phức tạp cho nhiều ID thì có thể sử dụng cách
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:329
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com8
Chúng tôi đã vượt qua
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com00 cho cả 3 kỷ lục, bạn có thể thấy mã đẹp hơn thay vì viết
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com01. Vì vậy, đây là một cách khác và tốt để truyền hàng loạt tham số bổ sung
05 Phương thức syncWithoutDetaching[] trong Laravel
Phương pháp
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com02 được sử dụng để đính kèm nhiều ID mà không xóa các bản ghi hiện có. Vậy là bạn đã biết cách thức hoạt động của
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:326, phương thức
id name created_at updated_at -- ---------- ------------------- ------------------ 1 Admin 2021-05-27 13:00:32 2021-05-27 13:00:32 2 Subscriber 2021-05-27 13:00:32 2021-05-27 13:00:32 3 Editor 2021-05-27 13:00:32 2021-05-27 13:00:32 4 Viewer 2021-05-27 13:00:32 2021-05-27 13:00:326 sẽ loại bỏ các ID khác khỏi pivot table. Phương pháp này chỉ đính kèm các ID mà không loại bỏ các ID khác
id name email -- ------- ------- 1 John Doe 1 johndoe+1@example.com 2 John Doe 2 johndoe+2@example.com 3 John Doe 3 johndoe+3@example.com 4 John Doe 4 johndoe+4@example.com4
Đó là nó từ cuối của chúng tôi. Chúng tôi hy vọng bài viết này đã giúp bạn hiểu phương pháp đồng bộ Laravel với một ví dụ
Ngoài ra, hãy đọc hướng dẫn của chúng tôi
- ấu trùng. Bảng Pivot với một ví dụ
- ấu trùng. Trình truy cập với một ví dụ
- ấu trùng. Mutators với một ví dụ
- ấu trùng. Thay đổi tên cột khi di chuyển
- Cách sử dụng Where Date Between trong Laravel
- Làm thế nào để thêm phân trang Laravel Next Prev
- Laravel Xóa cột khỏi bảng khi di chuyển
- ấu trùng. Lấy tên tháng từ ngày
- ấu trùng. Tăng Số Lượng Nếu Sản Phẩm Đã Có Trong Giỏ Hàng
- Cách Tính Tuổi Từ Ngày Sinh
- Cách tạo URL iFrame động trong Elementor
- Cách xử lý các công việc thất bại trong Laravel
- Cách xóa dữ liệu WooC Commerce sau khi gỡ cài đặt
- Cách lấy bản ghi mới nhất trong Laravel
- Cách phá vỡ các vòng lặp lồng nhau trong PHP hoặc Laravel
- Cách truyền tham số URL của Laravel
- Di chuyển cụ thể của Laravel Run
Vui lòng cho chúng tôi biết trong phần nhận xét nếu mọi thứ hoạt động như mong đợi, các vấn đề của bạn hoặc bất kỳ câu hỏi nào. Nếu bạn nghĩ rằng bài viết này đã tiết kiệm thời gian và tiền bạc của bạn, vui lòng bình luận, chia sẻ, thích và đăng ký. Cảm ơn bạn đã đọc bài đăng này 🙂 Hãy mỉm cười. mã hóa hạnh phúc