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

Fast Paginate in Laravel

Fast Paginate in Laravel

Laravel Fast Paginate là gì? Laravel Fast Paginate là một macro nhanh về phân trang offset/limit cho Laravel. Nó được sử dụng để thay thể paginate trong Laravel.Package này sử dụng phương pháp SQL t...

Laravel Socialite Login With Google

Laravel Socialite Login With Google

Google Google là một công cụ tìm kiếm trên internet. Nó sử dụng một thuật toán độc quyền được thiết kế để truy xuất và sắp xếp các kết quả tìm kiếm nhằm cung cấp các nguồn dữ liệu đáng tin cậy và ph...

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

Integrating CKFinder into CKEditor 5 in Laravel 11

Integrating CKFinder into CKEditor 5 in Laravel 11

CKEditor 5 CKEditor 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 Migration

Laravel Migration

Migration cho phép các nhà phát triển (Developer) nhanh chóng tạo ra cở sở dữ liệu của ứng dụng mà không cần vào màn hình quản lý cơ sở dữ liệu hay chạy bất kì một câu lệnh SQL nào. Trước hết, nếu...

Laravel One to One Eloquent Relationship

Laravel One to One Eloquent Relationship

Mối quan hệ một-một là một mối quan hệ rất cơ bản. Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cách tạo dữ liệu và truy xuất dữ liệu bằng Eloquent Model. Trong hướng dẫn này, tôi sẽ tạo hai bảng là u...

Laravel Many to Many Eloquent Relationship

Laravel Many to Many Eloquent Relationship

Many To many Relationship là mối quan hệ hơi phức tạp hơn mối quan hệ 1 - 1 và 1- n. Ví dụ một user có thể có nhiều role khác nhau, trong đó role cũng được liên kết với nhiều user khác nhau. Vì vậy...

Laravel Custom Rules

Laravel Custom Rules

Trong quá trình phát triển website Laravel, mình cảm thấy hệ thống Validation của Laravel rất tuyệt vời, nó cung cấp đã cung cấp cho chúng ta một bộ quy tắc kiểm tra dữ liệu, mà trong các trường hợp b...

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

ManhDanBlogs