Symfony / Doctrine2 и ассоциативная сущность

Обычно при запросе в пользовательском классе репозитория я использую что-то вроде этого:

SELECT * FROM BundleName:Entity

Но как мне это сделать для ассоциативной сущности?

У меня есть сущность «Билет» и сущность «Тег». Это отношение ManyToMany.

В phpMyAdmin у меня есть ассоциативная таблица ticket_tag, но как мне получить ее с помощью Doctrine?

Спасибо

Как вы строили свои отношения в доктрине? Если это настоящий ManyToMany, зачем вам эти ассоциативные объекты? У вас должны быть геттеры с обеих сторон для получения связанных объектов или использовать DQL-запрос для получения любого из них по определенным условиям.

Jeroen 07.08.2018 14:09

У меня есть геттеры с обеих сторон, но я хочу сделать больше. Допустим, я хочу получить количество билетов для каждого тега. Я не хочу зацикливаться на ВСЕХ билетах (ticket-> getTags ()). Если у моего пользователя есть 10к билетов, например.

Tibo 07.08.2018 14:13

Мой рабочий SQL следующий: SELECT tag.id, tag.name, count (tt.ticket_id) FROM ticket_tag tt, savBundle: Tag tag WHERE tag.id = tt.tag_id GROUP BY tag.id, tag.name. Так что в идеале я хотел бы знать, как получить мою таблицу ticket_tag с доктриной

Tibo 07.08.2018 14:16

Получение значения масштабирования - это совершенно другой вопрос. Возможно, вам нужно быть более конкретным и, возможно, посетить раздел dql документации.

Cerad 07.08.2018 14:17

В stackoverflow.com/questions/9214471/… мы используем объект пакета из symfony, но я хочу использовать таблицу, которая НЕ является объектом в моем проекте symfony. Я не могу просто использовать BundleName: EntityName

Tibo 07.08.2018 14:33

Понятия не имею, о чем вы просите. Используйте sql, если вам нужно получить данные из несопоставленной таблицы. Но я не понимаю, как можно иметь ассоциативную сущность, которая не является сущностью. Другими словами, обновите свой вопрос своим актуальным вопросом, и, возможно, кто-то сможет помочь.

Cerad 07.08.2018 14:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
6
153
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы должны использовать createQueryBuilder для обработки требований вашего пользовательского запроса, если у вас есть допустимые отношения по сущностям. Например: Внутри репозитория билетов вы должны обращаться вот так, если вы хотите выполнить больше операций, вы должны узнать больше здесь: https://symfony.com/doc/3.3/doctrine/repository.html

$query = $this->createQueryBuilder('t')
     ->select('count(t.id) as total_ticket, tag.id as tagId')
     ->leftJoin('t.tags', 'tag')
     ->groupBy('tag.id')
;

return $query->getQuery()->getResult();

чтобы увидеть / узнать больше подходящих методов, связанных с createQueryBuilder, пожалуйста, посмотрите здесь doctrine-project.org/projects/doctrine-orm/en/2.6/reference/‌…

Ashutosh Rai 07.08.2018 14:20

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