Я строю метод репозитория, чтобы посмотреть, если 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
), кто-нибудь может дать мне толчок?
Вы нанесли на карту свою собственность там, где вы находитесь в правильном пути просто присоединитесь к собственности $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);
Других решений пока нет …