Ошибка / предупреждение Symfony FormBuilder Query_builder

1

Я использую query_builder в formBuilder для получения "форм" из БД. Когда я использую этот запрос

'query_builder' => function (EntityRepository $er) {
                        return $er->createQueryBuilder('f')
                            ->select('f');
                    },

оно работает. Но тогда список опций содержит все формы. Но формы могут иметь ревизии, поэтому я хочу сделать только последнюю ревизию из каждой формы и показать ее в списке опций. Чтобы сделать это, я изменил запрос на этот

 'query_builder' => function (EntityRepository $er) {
                        return $er->createQueryBuilder('f')
                            ->select('f, MAX(f.revisionNumber) as max_revision')
                            ->groupBy('f.name');
                    },

Но с этим запросом я получаю следующее сообщение об ошибке/предупреждении

Warning: spl_object_hash() expects parameter 1 to be object, string given 

Что это значит и как я могу это решить?

  • 0
    Попробуйте select('f.name
  • 0
    По-прежнему получаю ту же ошибку
Показать ещё 4 комментария
Теги:
forms
doctrine
symfony-forms

2 ответа

1

Я нашел ответ!

Это вопрос, который я должен был использовать, чтобы он работал так, как я хотел.

'query_builder' => function (EntityRepository $er) {
                        $qb = $er->createQueryBuilder('f')
                            ->select('f')
                            ->where('f.revisionNumber = (SELECT MAX(f2.revisionNumber) FROM AppBundle:Form f2 WHERE f.formKey = f2.formKey GROUP BY f2.formKey)')
                        ;
                        return $qb;
                    },
0

Попробуйте что-то вроде этого

$orderObj = $this->getDoctrine()
    ->getRepository('') # your repositery ex (StackOrdersBundle:PurchaseOrder)
    ->createQueryBuilder('f')
    ->select('f.name, MAX(f.revisionNumber) as max_revision')
    ->where('') # add if want or remove
    ->groupBy(f.name)
    ->getQuery()
    ->getResult();
  • 0
    Но это ведь в контроллере, верно? Мне нужно получить поле формы с этими данными, поэтому я должен сделать это в formType.
  • 0
    я это в контроллере

Ещё вопросы

Сообщество Overcoder
Наверх
Меню