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 Validation

Laravel Validation

Lợi thế lớn nhất của Laravel so với các Framework khác là Laravel tích hợp rất nhiếu tính năng được tích hợp sẵn. Trong bài viết này, chúng ta sẽ tìm hiểu về Laravel Validation. Chức năng Là một...

Laravel 9 REST API With Sanctum Authentication

Laravel 9 REST API With Sanctum Authentication

Laravel Sanctum Laravel Sanctum cung cấp một hệ thống authentication đơn giản cho các SPA, ứng dụng Mobile và API đơn giản sử dụng token. Sanctum cho phép ứng dụng của bạn phát hành các mã token...

Implementing Private User Folders with CKFinder in Laravel

Implementing Private User Folders with CKFinder in Laravel

CKFinder 3 CKFinder 3 là trình quản lý tập tin được tích hợp với CKEditor 4 và CKEditor 5. Nó giúp bạn dễ dàng đưa các tập tin và hình ảnh vào nội dung của Editor một cách an toàn. Đây là một tín...

Laravel UI Custom Email Password Reset Template

Laravel UI Custom Email Password Reset Template

Nếu bạn đang dùng thư viện laravel/ui để làm các chức năng liên quan đến authentication, và trong dự án của bạn, bạn cần thay đổi template email password reset thay vì sử dụng template email password...

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 Socialite Login With Facebook

Laravel Socialite Login With Facebook

Ngoài xác thực dựa trên biểu mẫu điển hình, Laravel cũng cung cấp một cách đơn giản và thuận tiện để sử dụng Laravel Socialite để xác thực với các nhà cung cấp OAuth. Socialite hiện hỗ trợ xác thực qu...

Laravel Has Many Through Eloquent Relationship

Laravel Has Many Through Eloquent Relationship

Has Many Through Relationship hơi phức tạp để hiểu một cách đơn giản, nó sẽ cung cấp cho chúng ta một con đường tắt để có thể truy cập dữ liệu của một quan hệ xa xôi thông qua một mối quan hệ trung gi...

ZSH-Artisan CLI and Docker: The Perfect Match for Laravel Development

ZSH-Artisan CLI and Docker: The Perfect Match for Laravel Development

Zsh Zsh viết tắt của “ Z Shell ” là một shell nâng cao cho hệ thống Unix và Linux. Nó được phát triển nhằm cung cấp các tính năng và khả năng cao hơn so với shell mặc định trên hầu hết các hệ thố...

How to Install Laravel on CentOS 6/7

How to Install Laravel on CentOS 6/7

Laravel là một PHP Framework mã nguồn mở miễn phí, được phát triển bởi Taylor Otwell với phiên bản đầu tiên được ra mắt vào 6/2011. Laravel ra đời nhằm mục đích phát triển ứng dụng web dựa trên mô hìn...

ManhDanBlogs