我正在使用formBuilder中的query_builder获取表单'来自DB。当我使用此查询时
'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 :(得分: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;
},
答案 1 :(得分: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();