РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
193 of 1392 menu

Метод withCount

Метод withCount применяется к запросу Eloquent и позволяет получить количество связанных записей без их фактической загрузки. Метод принимает имя отношения в качестве первого параметра. Результат сохраняется в атрибуте модели с суффиксом _count. Это полезно при необходимости отобразить количество комментариев, лайков или других связанных данных.

Синтаксис

<?php Model::withCount($relation)->get(); ?>

Пример

Давайте получим все посты с количеством комментариев к каждому из них:

<?php namespace AppHttpControllers; use AppModelsPost; class PostController extends Controller { public function index() { $posts = Post::withCount('comments')->get(); foreach ($posts as $post) { echo $post->title . ': ' . $post->comments_count . ' comments'; } } } ?>

Результат выполнения кода:

"First post: 5 comments" "Second post: 3 comments" "Third post: 0 comments"

Пример

Подсчитаем количество лайков для каждого поста:

<?php namespace AppHttpControllers; use AppModelsPost; class PostController extends Controller { public function index() { $posts = Post::withCount('likes')->get(); foreach ($posts as $post) { echo $post->title . ': ' . $post->likes_count . ' likes'; } } } ?>

Результат выполнения кода:

"First post: 10 likes" "Second post: 7 likes" "Third post: 2 likes"

Пример

Загрузим количество комментариев только для опубликованных постов с использованием дополнительных условий:

<?php namespace AppHttpControllers; use AppModelsPost; class PostController extends Controller { public function index() { $posts = Post::where('status', 'published') ->withCount(['comments' => function ($query) { $query->where('approved', true); }]) ->get(); foreach ($posts as $post) { echo $post->title . ': ' . $post->comments_count . ' approved comments'; } } } ?>

Результат выполнения кода:

"First post: 4 approved comments" "Second post: 2 approved comments" "Third post: 0 approved comments"

Пример

Используем псевдоним для изменения имени атрибута с количеством записей:

<?php namespace AppHttpControllers; use AppModelsPost; class PostController extends Controller { public function index() { $posts = Post::withCount([ 'comments' => 'total_comments' ])->get(); foreach ($posts as $post) { echo $post->title . ': ' . $post->total_comments . ' comments'; } } } ?>

Результат выполнения кода:

"First post: 5 comments" "Second post: 3 comments" "Third post: 0 comments"

Смотрите также

  • метод with,
    который загружает связанные записи
  • метод loadCount,
    который загружает количество связанных записей для уже полученной модели
  • метод withExists,
    который проверяет наличие связанных записей
  • метод withSum,
    который подсчитывает сумму значений связанных записей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить