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 0 Bình luận

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)