Querying Relationship Existence

https://viblo.asia/p/eloquent-relationships-in-laravel-phan-3-MJykjmxyePB

Querying Relationship Existence

Khi truy cập vào các record của 1 model, bạn muốn giới hạn kết quả của bạn dựa trên sự tồn tại của các relationship. Ví dụ, hãy tưởng tượng bạn muốn lấy tất cả các bài viết blog mà có ít nhất 1 comment. Để làm như vậy, bạn có thể vượt qua tên của các relationship với has method:

// Retrieve all posts that have at least one comment...
$posts = App\Post::has('comments')->get();

Bạn cũng có thể chỉ định 1 operator và đếm để tùy chỉnh cho truy vấn:

// Retrieve all posts that have three or more comments...
$posts = Post::has('comments', '>=', 3)->get();

Các câu lệnh lồng nhau cũng có thể được xây dựng bằng các dấu ".", Ví dụ, bạn có thể lấy hết các posts mà có ít nhất 1 comment và vote:

// Retrieve all posts that have at least one comment with votes...
$posts = Post::has('comments.votes')->get();

Nếu bạn cần nhiều hơn nữa, bạn có thể sử dụng các method whereHasorWhereHas đặt "where" trong điều kiện query của bạn. Những method này cho phép bạn thêm các ràng buộc tùy chỉnh cho 1 relationship, chẳng hạn như kiểm tra nội dung của 1 comment:

// Retrieve all posts with at least one comment containing words like foo%
$posts = Post::whereHas('comments', function ($query) {
    $query->where('content', 'like', 'foo%');
})->get();

Last updated