Здравствуйте. Столкнулся с проблемой, как указать при выборке поля в query builder, которые являются связующими (в моём случае много ко многим)?
Сущность User
...
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
*
*/
protected $roles;
Сущность Role
...
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="roles")
*/
private $users;
Запрос строю в репозитории сущности User так:
public function loadListOfUsers($fields = array('u')){
$query = $this
->createQueryBuilder('u')
->select($fields);
$users = $query->getQuery()->getResult();
return $users;
}
В контроллере:
public function getAction()
{
$fields = array(
'u.id',
'u.username',
'u.email',
'u.avatar',
'u.isActive',
'u.roles',
);
$restresult = $this->getDoctrine()->getRepository('AppUserBundle:User')->loadListOfUsers($fields);
if ($restresult === null) {
return new View("there are no users exist", Response::HTTP_NOT_FOUND);
}
return $restresult;
}
Если убрать u.roles, всё ок. Но нужно получать и роли, как это можно реализовать?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей