Sự khác biệt giữa đính kèm và đồng bộ hóa trong Laravel là gì?

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.com
0 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ơn

Mụ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.com
1,
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
2 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.com
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.com
3 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.com
5 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.com
6 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.com
0

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.com
3, 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.com
8 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.com
9,
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
0 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:32
1. 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:32
0 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:32
1 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.com
9

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.com
3 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:32
6

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
1

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
2

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.com
3 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.com
4

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:32
8 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.com
6

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:32
9

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
8

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.com
00 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.com
01. 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.com
02 đượ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:32
6, 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:32
6 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.com
4

Đó 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

  1. ấu trùng. Bảng Pivot với một ví dụ
  2. ấu trùng. Trình truy cập với một ví dụ
  3. ấu trùng. Mutators với một ví dụ
  4. ấu trùng. Thay đổi tên cột khi di chuyển
  5. Cách sử dụng Where Date Between trong Laravel
  6. Làm thế nào để thêm phân trang Laravel Next Prev
  7. Laravel Xóa cột khỏi bảng khi di chuyển
  8. ấu trùng. Lấy tên tháng từ ngày
  9. ấu trùng. Tăng Số Lượng Nếu Sản Phẩm Đã Có Trong Giỏ Hàng
  10. Cách Tính Tuổi Từ Ngày Sinh
  11. Cách tạo URL iFrame động trong Elementor
  12. Cách xử lý các công việc thất bại trong Laravel
  13. Cách xóa dữ liệu WooC Commerce sau khi gỡ cài đặt
  14. Cách lấy bản ghi mới nhất trong Laravel
  15. Cách phá vỡ các vòng lặp lồng nhau trong PHP hoặc Laravel
  16. Cách truyền tham số URL của Laravel
  17. 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

sync[] trong laravel là gì?

sync[] Nó tương tự như phương thức attachment[] và nó cũng dùng để đính kèm các mô hình có liên quan . phương thức sync[] chấp nhận một mảng ID để đặt trên bảng tổng hợp. Nếu các mô hình không tồn tại trong mảng, phương thức đồng bộ hóa sẽ xóa các mô hình khỏi bảng và chèn các mục mới vào bảng tổng hợp.

Tải háo hức trong laravel là gì?

Háo hức tải trong Laravel . Ngược lại, Lazy Loading chỉ truy xuất những thứ liên quan khi chúng thực sự cần thiết và chỉ cung cấp cho bạn một mục tại một thời điểm. Để tôi cho bạn xem một ví dụ thực tế. Hãy xem xét một cơ sở dữ liệu với hai bảng. bài viết và bình luận. you get all of the required data at the same time. In contrast, Lazy Loading only retrieves related things when they are actually needed and only gives you one item at a time. Let me show you a real life example. Consider a database with two tables: posts and comments.

Mô hình trục trong laravel là gì?

Định nghĩa của Laravel Pivot Table. Bảng tổng hợp được định nghĩa là tập hợp các giá trị được sắp xếp ở dạng bảng trong đó mọi giá trị riêng biệt của bảng liên quan có thể được truy cập dưới dạng bảng tính, cơ sở dữ liệu, v.v.. It is available in one or multiple discrete functionalities.

Làm cách nào để tạo mối quan hệ nhiều-nhiều trong laravel?

Làm cách nào để triển khai nhiều mối quan hệ trong Laravel? .
Tạo một dự án Laravel. Bước đầu tiên sẽ là tạo một dự án Laravel. .
Tạo một mô hình và di chuyển. .
Tạo một bảng tổng hợp. .
Xác định nhiều mối quan hệ. .
Sử dụng Mối quan hệ Nhiều đến Nhiều trong Bộ điều khiển của chúng tôi. .
Truy xuất hồ sơ

Chủ Đề