我的表单中有一个实体字段,它在列表中显示数据库中的所有表单。这些表格有修订号。我想要做的是在列表中仅显示表单的最后一个修订版本。
为了澄清,表单表格如下所示
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
答案 0 :(得分:2)
我也遇到过这个问题。
' query_builder'选项应该返回Doctrine \ ORM \ QueryBuilder或者一个关闭,在你的情况下(有人纠正我,如果我错了)"选择"方法应该返回一个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();
},
希望它有所帮助。