Я создаю форму с типом сущности следующим образом:
$form = $this->createFormBuilder()
->add('users', 'entity', array(
'class' => 'UserBundle:Users',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.name', 'ASC');
},)
)
->getForm();
Теперь я хочу изменить эту форму, чтобы показывать только отдельных пользователей.Я пытаюсь это:
->add('users', 'entity', array(
'class' => 'UserBundle:Users',
'query_builder' => function(EntityRepository $er) {
return $er->createQuery('SELECT DISTINCT u.name FROM UserBundle:Users ORDER BY u.name ASC')->getResult();
},)
)
, но Symfony выдает мне исключение.У меня вопрос, как я могу использовать пользовательский запрос в типе поля сущности?
Я не понимаю, что вы имеете в виду под последним ответом.Мой код выглядит так:
хранилище:
public function getDistinctUsers()
{
return $this->getEntityManager()->createQuery('SELECT DISTINCT u.name FROM UserBundle:Users u ORDER BY u.name DESC')->getResult();
}
контроллер:
->add('users', 'entity', array(
'class' => 'UserBundle:Users',
'query_builder' => function(EntityRepository $er) {
return $er->getDistinctUsers();
},)
)
веточка:
<form action="{{ path('user') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<input type="submit" />
</form>
и выдает исключение:Во время рендеринга шаблона было сгенерировано исключение («Ожидаемый аргумент типа« Doctrine \ ORM \ QueryBuilder »,« массив »задан») ...