Можно загрузить количество отношений для уже выбранной модели, например:
$post->loadCount([
'comments',
'something',
'else',
]);
Теперь я хочу добавить ограничения к некоторым счетчикам:
$post->loadCount([
'comments' => fn($q) => $q->where('approved', true),
'something',
'else',
]);
Отлично, но теперь мне нужно подсчитать одобренные и не одобренные комментарии. И я застрял.
$post->loadCount([
'comments' => fn($q) => $q->where('approved', true), // as comments_approved
'comments' => fn($q) => $q->where('approved', false), // as comments_pending
'something',
'else',
]);
Это, конечно, не работает, потому что comments определяется в массиве дважды.
Кроме того, поскольку loadCount() ожидает имя отношения в качестве ключа массива, я не могу использовать comments_approved, потому что это не отношение.
Есть ли какой-то другой вариант в loadCount или другой подход?
Страницы по теме: Laravel Eloquent Lazy Eager Load Count и подсчет с нагрузкой Laravel и Почему появился loadCount() и его фактическое использование в laravel






Как и withCount, вы также можете использовать псевдоним имени отношения в loadCount.
$post->loadCount([
'comments as comments_approved' => fn($q) => $q->where('approved', true),
'comments as comments_pending' => fn($q) => $q->where('approved', false),
'something'
]);
К вашему сведению, я обсуждаю с другими кураторами возможность объединения вашего ответа на вопрос Почему появился loadCount() и его фактическое использование в laravel. Ваши идеи будут уникальными и полезными на этой странице. Этот вопрос уместно задать как каноническую страницу для всех новых вопросов по теме loadCount(). Если ваш ответ будет перенесен, будете ли вы готовы отредактировать свой ответ, чтобы более широко/обобщенно объяснить эту реализацию с помощью псевдонимов?
Я считаю, что этот новый вопрос послужит хорошим знаком для старой канонической страницы.
Привет @mickmackusa, я буду рад рассказать больше об этой реализации.
Я говорил с Дхарманом, и объединения страниц не будет. Если вы хотите ответить на эту старую страницу, чтобы описать реализацию этого ответа (в обобщенном виде), я думаю, это поможет будущим читателям понять, как использовать этот метод со столбцами с псевдонимами.
Если вам нужно подсчитывать только
approveиnon-approve, то какова цельsomethingиelseв вашем последнем запросе? Можете ли вы уточнить?