So sánh Lazy Collection và Collection trong laravel 6.0

2nd Nov 2022
So sánh Lazy Collection và Collection trong laravel 6.0
Table of contents

Trong bản cập nhật Laravel 6.0, có một thứ đáng để chúng ta quan tâm là LazyCollection. Vậy LazyCollection có ưu, nhược điểm gì so với Collection.
Giả sử chúng ta có 10,000 dữ liệu User, và query theo 2 cách:

  • Cách 1: $users = User::all()

  • Cách 2: $users = User::cursor()

Kết quả trả về :

  • Cách 1:
Collections
  • Cách 2:
Collections

Như vậy, với cách 1, tất cả 10,000 dữ liệu được tải về cùng một lúc. Với cách 2, dữ liệu chỉ được tải về khi được gọi tới sử dụng.

Câu hỏi ở đây là dữ liệu từ LazyCollection được gọi tới sử dụng như thế nào? không trả về dữ liệu thì khi dữ liệu được gọi tới sử dụng sẽ query lên database? với một dữ liệu lớn cần in ra sử dụng foreach thì sẽ xử lý như nào?

Câu trả lời là LazyCollection sử dụng yield của php thay cho return như Collection.

Nếu ở view với mô hình 10,000 dữ liệu sử dụng foreach để hiển thị thì LazyCollection và Collection có gì khác nhau ?

foreach($users as $user)

  • Collection:
Collections
  • LazyCollection:
Collections

Vậy LazyCollection giúp chúng ta thao tác với cơ sở dữ liệu rất lớn nhưng vẫn giữ mức sử dụng bộ nhớ thấp hơn rất nhiều so với Collection.

Xem thêm bài cùng chuyên mục : Laravel 6.0 có gì mới ?

P/s:

Nếu có vẫn gặp vướng mắc trong khi thực hành hoặc có bất kì thắc mắc về PHP, Laravel hay muốn tìm hiểu thêm các thông tin hữu ích, các bạn hãy tham gia group Laravel VietNam để được các admin và thành viên support trực tiếp vấn đề mà bạn gặp phải nhé.

Bạn thấy bài viết này như thế nào?
0 reactions

Add new comment

Image CAPTCHA
Enter the characters shown in the image.

Related Articles

Mỗi kết nối cơ sở dữ liệu được định nghĩa trong một mảng, với tên kết nối là khóa của mảng

Eager Loading là một kỹ thuật tối ưu hóa truy vấn cơ sở dữ liệu trong Laravel, giúp tăng tốc độ truy vấn và giảm số lượng truy vấn cần thiết để lấy dữ liệu liên quan đến một bản ghi.

Để sử dụng Eager Loading với điều kiện trong Laravel, bạn có thể sử dụng phương thức whereHas hoặc orWhereHas trong Eloquent Builder.

E hiểu đơn giản vầy nha. auth() hay Auth trong laravel là những function global hay class, nó cũng chỉ là 1 thôi

Xin chào các bạn, tuần này mình sẽ viết một bài về cách xử lý Real Time(thời gian thực) với Laravel và Pusher