Объявите псевдонимы для счетчиков, которые используют один и тот же столбец, с помощью метода Laravel Eloquent loadCount()

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

$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 или другой подход?

Если вам нужно подсчитывать только approve и non-approve, то какова цель something и else в вашем последнем запросе? Можете ли вы уточнить?

Subha 28.06.2024 20:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как и 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 03.07.2024 04:20

Я считаю, что этот новый вопрос послужит хорошим знаком для старой канонической страницы.

mickmackusa 03.07.2024 04:21

Привет @mickmackusa, я буду рад рассказать больше об этой реализации.

Aboubakary Cissé 03.07.2024 13:25

Я говорил с Дхарманом, и объединения страниц не будет. Если вы хотите ответить на эту старую страницу, чтобы описать реализацию этого ответа (в обобщенном виде), я думаю, это поможет будущим читателям понять, как использовать этот метод со столбцами с псевдонимами.

mickmackusa 05.07.2024 02:36

Другие вопросы по теме