New Laravel 11.37: Eloquent Methods

Laravel cung cấp cho chúng ta khả năng xây dựng các truy vấn dữ liệu mạnh mẽ với Eloquent ORM, giúp chúng ta có thể xử lý các truy vấn cơ sở dữ liệu phức tạp một cách dễ dàng hơn bao giờ hết.

Trong phiên bản Laravel trước đó, đã cung cấp cho chúng ta 2 method là whereRelationwhereMorphRelation để đơn giản hóa thực hiện các truy vấn mối quan hệ.

Nhưng lại không cung cấp cho chúng ta các method đối lập, thì trong phiên bản Laravel 11.37 đã cung cấp thêm cho chúng ta thêm 2 method:

whereDoesntHaveRelation

whereMorphDoesntHaveRelation

Method whereDoesntHaveRelation

Trước đây, để lọc dữ liệu khi mối quan hệ không thỏa mãn điều kiện, chúng ta thường sử dụng cú pháp như sau:

return User::whereDoesntHave('comments', function ($query) {
    $query->where('created_at', '>', now()->subDay());
})->get();

Tuy nhiên, với sự hỗ trợ của method whereDoesntHaveRelation, chúng ta có thể viết câu truy vấn ngắn gọn hơn:

return User::whereDoesntHaveRelation(
    'comments', 'created_at', '>', now()->subDay()
)->get();

return User::whereDoesntHaveRelation(
    'comments', 'is_approved', false
)->get();

Method whereMorphDoesntHaveRelation

Trước đây, khi chưa có method whereMorphDoesntHaveRelation, chúng ta thường sử dụng cách sau để lọc dữ liệu các mối quan hệ Polymorphic:

return Comment::whereDoesntHaveMorph('commentable', [Post::class, Video::class], function ($query) {
    $query->where('created_at', '>', now()->subDay());
})->get();

Tuy nhiên, với sự hỗ trợ của method whereMorphDoesntHaveRelation, chúng ta có thể viết câu truy vấn ngắn gọn hơn:

return Comment::whereMorphDoesntHaveRelation(
    'commentable', [Post::class, Video::class], 'created_at', '>', now()->subDay()
)->get();

return Comment::whereMorphDoesntHaveRelation(
    'commentable', [Post::class, Video::class], 'is_approved', false
)->get();

Kết luận

Method whereDoesntHaveRelationwhereMorphDoesntHaveRelation đã mang đến một cải tiến đáng kể trong việc viết các câu truy vấn lọc dữ liệu trên các mối quan hệ trong Laravel.

Và có thể trở thành công cụ hữu ích giúp lập trình viên tối ưu hóa mã nguồn khi làm việc với các mối quan hệ trong Laravel

CÓ THỂ BẠN QUAN TÂM

Laravel CKEditor 5 Image Upload

Laravel CKEditor 5 Image Upload

CKEditor 5CKEditor 5 là một trình soạn thảo văn bản phong phú JavaScript với nhiều tính năng và khả năng tùy chỉnh. CKEditor 5 có kiến trúc MVC hiện đại, mô hình dữ liệu tùy chỉnh và DOM ảo, mang...

Laravel Accessor and Mutator

Laravel Accessor and Mutator

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách để format các Eloquent Attributes bằng cách sử dụng tính năng Laravel Accessors and Mutators. Accessors được sử dụng để format các thuộc tính khi c...

Laravel Model

Laravel Model

Model là gì? Trong mô hình MVC, chữ “M” viết tắt là Model, Model dùng để xử lý logic nghiệp vụ trong bất kì ứng dụng dựa trên mô hình MVC. Trong Laravel, Model là lớp đại diện cho cấu trúc logic và...

Laravel Upload File Using Trait

Laravel Upload File Using Trait

Hiện nay, đa số các dự án đều có chức năng upload file, nên tôi đã thử xây dựng một lớp Trait Upload File, để chúng ta dễ dàng sao chép qua các dự án khác để sử dụng, nhằm rút ngắn thời gian phát triể...

Laravel Queue Workers With Systemd

Laravel Queue Workers With Systemd

Systemd chủ yếu được sử dụng để quản lý các service trên môi trường Linux, nhưng nó cũng cho phép chúng ta quản lý các service với quyền không phải là root. Điều này, làm cho systemd trở thành một giả...

Implementing Private User Folders with elFinder in Laravel

Implementing Private User Folders with elFinder in Laravel

elFinder elFinder là một trình quản lý tập tin mã nguồn mở dành cho web, được viết bằng JavaScript sử dụng jQuery UI. elFinder được phát triển dựa trên cảm hứng từ sự tiện lợi và đơn giản của chư...

Laravel Controllers

Laravel Controllers

Trong mô hình MVC, chữ "C" là từ viết tắt của Controller và nó đóng vai trò rất quan trọng để phân tích các logic business. Khi người dùng truy cập vào trình duyệt, nó sẽ đi đến route đầu tiên, sau đó...

Laravel Mail Sending Redirector Listener

Laravel Mail Sending Redirector Listener

Trong quá trình phát triển web, việc gửi email là một chức năng quan trọng để thông báo, đặt lại mật khẩu, hoặc tương tác với người dùng. Tuy nhiên, khi chúng ta đang trong quá trình phát triển, vi...

Laravel Socialite Login With Github

Laravel Socialite Login With Github

GitHub GitHub là một nền tảng phát triển phần mềm trực tuyến. Nó được sử dụng để lưu trữ, theo dõi và cộng tác trong các dự án phần mềm. Nó giúp các nhà phát triển dễ dàng chia sẻ các tập tin mã...

ManhDanBlogs