Присоединяйтесь к DQL, если промежуточная таблица не имеет сопоставленной сущности

Я строю метод репозитория, чтобы посмотреть, если fos_group назначается любому fos_user перед разрешением удаления группы. По сути, это необработанный запрос, который я пытаюсь сделать с использованием DQL:

SELECT
COUNT(*)
FROM
fos_user u
LEFT JOIN fos_user_user_group fug ON (fug.user_id = u.id)
WHERE
fug.group_id = :group_id

Вот как я устанавливаю отношения между Users а также Groups:

/**
* @ORM\ManyToMany(targetEntity="Group")
* @ORM\JoinTable(name="fos_user_user_group",
*      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
*      inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
* )
*/
protected $groups;

И это то, что я сделал до сих пор:

$qb = $this->getEntityManager()->createQueryBuilder();

$qb
->select('COUNT(gr.id)')
->from("UserBundle:Group", "gr");

return $qb->getQuery()->getSingleScalarResult();

Но я застрял, так как я не знаю, как добавить join предложение с не отображенной таблицей / сущностью (fos_user_user_group), кто-нибудь может дать мне толчок?

0

Решение

Вы нанесли на карту свою собственность там, где вы находитесь в правильном пути просто присоединитесь к собственности $groups в сущности пользователя он присоединится к вашей соединительной таблице fos_user_user_group и использовать то, что когда-либо вы где пункт

 $qb
->select('COUNT(g.id)')
->from('UserBundle:User', 'u')
->join('u.groups g')
->where('g.id = :val')
->setParameter('val',$your_group_id);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]