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

Метод loadCount

Метод loadCount применяется к уже полученной коллекции или экземпляру модели Eloquent и загружает количество записей для указанных отношений. В отличие от withCount, который загружает количество во время выполнения основного запроса, loadCount используется для ленивой загрузки подсчётов уже после того, как модели были получены. Это полезно, когда вы не знаете заранее, какие отношения вам понадобятся, или когда нужно дозагрузить подсчёты в уже существующую коллекцию.

Синтаксис

<?php Model::loadCount($relations); ?>

Метод принимает один параметр - имя отношения или массив имён отношений. Возвращает те же модели, у которых теперь доступно свойство с суффиксом '_count'.

Пример

Предположим, у нас есть модель Post с отношением comments. Получим все посты, а затем загрузим количество комментариев к каждому посту:

<?php use AppModelsPost; $posts = Post::all(); $posts->loadCount('comments'); foreach ($posts as $post) { echo "Post: " . $post->title . ", Comments: " . $post->comments_count; } ?>

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

["Post: article, Comments: 5", "Post: note, Comments: 3", "Post: story, Comments: 0"]

Пример

Метод loadCount позволяет загрузить количество для нескольких отношений одновременно, передав массив имён отношений:

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

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

["Article 1 - Comments: 5, Likes: 12", "Article 2 - Comments: 3, Likes: 8", "Article 3 - Comments: 0, Likes: 4"]

Пример

Метод loadCount можно использовать с условиями для подсчёта только определённых связанных записей, передавая массив с ключами-отношениями и значениями-замыканиями:

<?php use AppModelsPost; $posts = Post::where('status', 'published')->get(); $posts->loadCount([ 'comments' => function ($query) { $query->where('approved', true); } ]); foreach ($posts as $post) { echo $post->title . " - Approved comments: " . $post->comments_count; } ?>

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

["Article 1 - Approved comments: 4", "Article 2 - Approved comments: 2", "Article 3 - Approved comments: 0"]

Пример

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

<?php use AppModelsPost; $post = Post::find(1); $post->loadCount('comments'); echo "Comments count: " . $post->comments_count; ?>

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

"Comments count: 5"

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

  • метод withCount,
    который загружает количество связанных записей во время основного запроса
  • метод load,
    который загружает сами связанные записи для уже полученных моделей
  • метод loadMissing,
    который загружает только те отношения, которые ещё не были загружены
  • метод with,
    который выполняет жадную загрузку связанных записей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить