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 TinyMCE in Laravel 10 using Vite

Integrating TinyMCE in Laravel 10 using Vite

TinyMCE TinyMCE là một trình soạn thảo WYSIWYG được xây dựng trên nền tảng Javascript, được phát triển dưới dạng mã nguồn mở theo giấy phép MIT bởi Tiny Technologies Inc. TinyMCE cho phép ngư...

Laravel Logging Of Database Queries

Laravel Logging Of Database Queries

Laravel là một Framework PHP mạnh mẽ và linh hoạt, giúp cho việc phát triển ứng dụng trở nên đơn giản và dễ dàng hơn. Một trong những tính năng hữu ích của Laravel là khả năng ghi nhật ký truy vấn...

Laravel Validate Video Duration

Laravel Validate Video Duration

Đôi khi trong dự án, chúng ta cần xác định thời lượng video được phép upload lên server. Nhưng rất tiếc, Laravel không cung cấp validate xác định thời lượng video để chúng ta thực hiện được. Vì vậy, t...

Export CSV from AWS RDS - Import into MySQL with Laravel

Export CSV from AWS RDS - Import into MySQL with Laravel

Transfer Database Trong quá trình phát triển và bảo trì dự án, nhiệm vụ di chuyển cơ sở dữ liệu từ hệ thống này sang hệ thống khác là một nhiệm vụ khá là phổ biến. Chúng ta thường sẽ sử dụng câu...

Laravel Facades

Laravel Facades

Facade là gì? Chúng ta có thể hiểu Facade là mặt tiền và mặt trước của một tòa nhà hay bất cứ thứ gì. Tầm quan trọng của Facade là chúng có thể dễ nhận thấy và nổi bật hơn, tương tự như vậy, thì...

Pipeline Design Pattern in Laravel

Pipeline Design Pattern in Laravel

Pipeline Design Pattern là nơi mà các dữ liệu được chuyển qua một chuỗi các nhiệm vụ hoặc giai đoạn. Pipeline hoạt động giống như một chuỗi dây chuyền lắp ráp, nơi dữ liệu được xử lý và sau đó, sẽ...

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 User Authentication

Laravel User Authentication

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn xây dựng chức năng đăng nhập trong Laravel. Công bằng mà nói thì bạn có thể sử dụng Laravel UI hoặc JetStream để tự động tạo ra chức năng đăng nhập trong Lara...

Laravel Routing

Laravel Routing

Route là gì? Đúng như tên gọi của nó, Route thực hiện chức năng định tuyến, dẫn đường cho các HTTP request gửi đến đúng nơi mà ta mong muốn. Với sự phát triển mạnh mẽ của ứng dụng web ngày nay, việc...

ManhDanBlogs