我的表单中有一个实体字段,它以列表的形式显示数据库中的所有表单。这些表格有修订号。我想要做的是仅将表单的最后修订版显示为列表中的选项。
澄清一下,表单如下所示
Id || Name || Revision_number
1 || Form1 || 1
2 || Form1 || 2
选择列表应仅显示修订版 2。
到目前为止,我已经尝试过了
->add('form', 'entity', array(
'class' => 'AppBundle\Entity\Form',
'label' => 'label.ship.form',
'query_builder' => function(EntityRepository $er){
return $er->createQueryBuilder('f')
->select('f, MAX(f.revisionNumber) AS max_revision');
}
))
但我收到此错误
Warning: spl_object_hash() expects parameter 1 to be object, string given
最佳答案
我也遇到过这个问题。
'query_builder' 选项应该返回 Doctrine\ORM\QueryBuilder 或闭包,在你的情况下(如果我错了,有人纠正我),“select”方法也应该返回 Doctrine\ORM\QueryBuilder 对象。奇怪的是……
我所做的是在实体存储库中创建一个返回查询生成器本身的方法:
public function generateStaffRolesQB() {
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('r')
->from('DatabaseModelsBundle:Role', 'r')
->where('r.id IN (1, 2)');
return $qb;
}
在形式中我这样使用它:
'query_builder' => function(EntityRepository $er) {
return $er->generateStaffRolesQB();
},
希望有帮助。
关于php - Query_builder Symfony 表单生成器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33544654/