Doctrine2 упорядочивает по счету многие ко многим с множеством оставшихся соединений

У меня есть книга сущностей, и у нее слишком много связей с другими сущностями. теперь я хочу отсортировать столбец COUNT одного из многих ко многим свойствам отношения, и я использую этот подход

но он дал мне неправильный ответ:

  • Он показывает мне только одну строку из любого моего объекта соединения, потому что он группируется по идентификатору книги
  • Число подсчета неверно, потому что оно подсчитывает все строки соединения, поэтому число обычно очень велико

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

$this->createQueryBuilder('b')
        ->addSelect('bookTranslations')
        ->addSelect('bookGenres')
        ->addSelect('bookCrews')
        ->addSelect('feels')
        ->addSelect('genre')
        ->addSelect('user')
        ->leftJoin('b.translations', 'bookTranslations')
        ->leftJoin('b.bookGenres', 'bookGenres')
        ->leftJoin('b.bookCrews', 'bookCrews')
        ->leftJoin('bookCrews.user', 'user')
        ->leftJoin('bookGenres.genre', 'genre')
        ->leftJoin('b.feels', 'feels')
        ->addSelect('COUNT(bookGenres) AS HIDDEN genreCount')
        ->groupBy('b.id')
    ;

Я использую сериализатор symfony для данных ответа

Любые идеи?

Стоит ли изучать 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 и хотите разрабатывать...
3
0
26
1

Ответы 1

Предполагается, что вам будет отображаться одна строка за книгой из-за -> groupBy ('b.id'), сколько строк вы ожидаете по книгам?

Что касается сортировки, вам не хватает orderBy:

  ->orderBy('genreCount', 'DESC')

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

Milad Ghofrani 07.04.2021 15:10

Если вам нужна одна строка для каждой книги, но со всеми связями «многие-ко-многим», вам может потребоваться подзапрос для «многие-ко-многим». Посмотрите еще там: stackoverflow.com/questions/194852/…

Motchouk 08.04.2021 10:23

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