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

Integrating OpenAI in Laravel

Integrating OpenAI in Laravel

OpenAI OpenAI là một phòng thí nghiệm nghiên cứu trí tuệ nhân tạo (AI) của Mỹ bao gồm tổ chức phi lợi nhuận OpenAI Incorporated (OpenAI Inc.) và công ty con hoạt động vì lợi nhuận OpenAI Limited Par...

Integrating Google Gemini AI in Laravel

Integrating Google Gemini AI in Laravel

Google Gemini Gemini là một mô hình trí tuệ nhân tạo mới mạnh mẽ từ Google không chỉ có khả năng hiểu văn bản mà còn có thể hiểu cả hình ảnh, video và âm thanh. Gemini là một mô hình đa phương ti...

Laravel Task Scheduling

Laravel Task Scheduling

Trong các ứng dụng lớn, bạn cần lên lịch định kì cho các công việc bằng Cron jobs.  Tại số một số thời điểm, việc quản lý các cron jobs trở nên cồng kềnh và khó khăn hơn. Laravel Scheduler là một côn...

Laravel View

Laravel View

View là gì? Đây là phần giao diện (theme) dành cho người sử dụng. Nơi mà người dùng có thể lấy được thông tin dữ liệu của MVC thông qua các thao tác truy vấn như tìm kiếm hoặc sử dụng thông qua các...

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

Laravel Scout Full Text Search With Meilisearch

Laravel Scout Full Text Search With Meilisearch

Laravel Scout cung cấp một giải pháp đơn giản, dựa trên trình điều khiển để thêm tìm kiếm Full Text vào các mô hình Eloquent của bạn. Khi sử dụng Eloquent, Scout sẽ tự động giữ chỉ mục tìm kiếm của bạ...

Laravel Artisan Console

Laravel Artisan Console

Ngoài các lệnh command mặc định của Laravel được cung cấp bởi Artisan, có rất nhiều tác vụ trong ứng dụng Laravel của bạn có thể được xử lý rất tốt bằng các lệnh command này. Nhưng đôi khi có nhiều tá...

Laravel Socialite Login With Linkedin

Laravel Socialite Login With Linkedin

LinkedIn LinkedIn là mạng xã hội tập trung vào mạng lưới nghề nghiệp và phát triển nghề nghiệp và chuyên nghiệp lớn nhất thế giới trên internet. Bạn có thể sử dụng LinkedIn để tìm công việc hoặc...

Laravel UI Custom Email Verification Template

Laravel UI Custom Email Verification 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 verification thay vì sử dụng template email verificatio...

ManhDanBlogs