У меня есть профиль и сущность пользователя. Профили могут быть связаны с пользователями одним из трех способов:
- основной пользователь
- editПользователи
- просмотрПользователи
Это базовая структура разрешений. Что мне нужно сделать, так это получить все профили пользователя, независимо от предоставленных разрешений. Я думаю, что если бы я использовал Doctrine 2.5.*, все было бы в порядке, так как в QueryBuilder добавлено сравнение «member of», но я использую Symfony 2.7.* и, к сожалению, Doctrine поднимается только до 2.4.* (какая-то стабильность проблема возникает, если вы перейдете на Doctrine 2.5 с меньшим количеством Symfony 3).
Я не уверен, как воспроизвести функциональность, хотя.
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityRepository;
class ProfileRepository extends EntityRepository
{
/**
* @param User $user
*
* @return ArrayCollection
*/
public function getAllByUser(User $user, $status = NULL)
{
$qb = $this->createQueryBuilder('p');
$e = $qb->expr();
$qb->where($e->eq('p.primary_user', ':user'));
// Some kind of comparison? a join?;
$qb->setParameter('user', $user);
$qb->setParameter('userId', $user->getId());
if ($status) {
$qb->andWhere($e->eq('p.status', ':status'));
$qb->setParameter('status', $status);
}
return $qb->getQuery()->getResult();
}
}