Symfony форма query_buider и хранилище сущностей
Я пытаюсь создать форму с данными в типе коллекции в зависимости от пользователя, который регистрируется. Я'я подписанэта глава поваренной книги Symfony.
Все отлично работает когдаquery_builder
Опция закрытие, где я получаю свои данные из DQL. Поскольку данные должны быть извлечены из другого места в коде, я бы предпочел определить запрос в классе Repository.
Вот функция в моем хранилище:
public function findOwnedBy($user) {
$query = $this->getEntityManager()->createQuery("SELECT l FROM MyBundle:Article a JOIN a.owndBy u WHERE u.id = :userId");
$query->setParameters(array("userId"=>$user->getId()));
return $query->getResult();
}
Эта функция работает при вызове в контроллере и возвращает массив Article. Вот фрагмент документа Symfony:
$formOptions = array(
'class' => 'Acme\DemoBundle\Entity\User',
'multiple' => false,
'expanded' => false,
'property' => 'fullName',
'query_builder' => function(EntityRepository $er) use ($user) {
// build a custom query, or call a method on your repository (even better!)
},
);
Когда я помещаю вызов своей функции репозитория в query_builder, я получаю сообщение об ошибке:Expected argument of type "Doctrine\ORM\QueryBuilder", "array" given
, что я могу понять, потому что мой репозиторий возвращает массив Entity, а не QueryBuilder.
Я нене хочу дублировать код и создать новый QueryBuilder в форме. Как лучше всего использовать запрос из репозитория? Я думал о наличии двух функций в хранилище: одна возвращает массив, другая возвращает QueryBuilder, но комментарий в Symfony doc "или вызовите метод в вашем хранилище (даже лучше!) дай мне подуматьлучший способ для этого случая.