Sử dụng Eager Loading với điều kiện trong laravel

25th May 2023
Sử dụng Eager Loading với điều kiện trong laravel
Table of contents

Để 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.

Ví dụ, giả sử bạn muốn lấy danh sách các bài viết và chỉ lấy những bài viết có bình luận của một người dùng cụ thể, bạn có thể sử dụng mã sau:

$user_id = 1;

$posts = Post::whereHas('comments', function ($query) use ($user_id) {
    $query->where('user_id', $user_id);
})
->with(['comments' => function ($query) use ($user_id) {
    $query->where('user_id', $user_id);
}])
->get();

Trong đó, whereHas được sử dụng để chỉ lấy các bài viết có bình luận của người dùng có user_id là 1. with được sử dụng để tải trước các bình luận của người dùng có user_id là 1. Bằng cách này, chúng ta có thể tránh việc thực hiện nhiều truy vấn trong cơ sở dữ liệu và tối ưu hóa hiệu suất của ứng dụng.

Bạn có thể thay đổi điều kiện trong whereHas để lấy các mối quan hệ khác trong cơ sở dữ liệu, cũng như thay đổi điều kiện trong with để lấy các trường khác của mối quan hệ.

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.

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

Laravel cũng đi kèm với một số sản phẩm phụ tính phí như Forge, Envoyer, Spark. Tất nhiên, Taylor cũng phải kiếm tiền