Quay lại

Lấy số lượng records trong một relationships trong Laravel Eloquent Chuyên mục PHP và Laravel    2023-08-03    1.3k Lượt xem    74 Lượt thích    comment-3 Created with Sketch Beta. 0 Bình luận

Lấy số lượng records trong một relationships trong Laravel Eloquent

Sẽ có lúc bạn muốn lấy số lượng bản ghi cho mối quan hệ con cùng với truy vấn Eloquent chính.

Chẳng hạn, giả sử mình muốn lấy số lượng books and publications khi lấy authors. Để làm như vậy, chúng ta có thể sử dụng phương thức withCount trên Eloquent model như này.

$authors = app\Author::withCount(['books', 'publications'])->get();

Bây giờ khi bạn chạy vòng lập thì chúng ta có thể lấy số lượng cho các bản ghi mối quan hệ con này bằng cách sử dụng cột {relation}_count trong vòng lập như này.

foreach ($authors as $author) {
    $totalBooks = $author->books_count;

    $totalPublications = $author->publications_count;
}

Bạn có thể sử dụng bí danh (sử dụng as) và Closures để sử dụng cùng một mối quan hệ hai lần trong withCount cho các ràng buộc khác nhau như này.

$authors = app\Author::withCount([
    'books', 
    'books as published_books_count' => function (Builder $query) {
        $query->where('status', 'published');
    }
])->get();

aliased count column có thể được truy cập như sau.

$author->published_books_count;
 

tác giả

Bình luận (0)

Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough
Michael Gough

Bài viết liên quan

Learning English Everyday