Query_builder Symfony表单生成器错误

时间:2015-11-05 12:32:02

标签: php forms symfony

我的表单中有一个实体字段,它在列表中显示数据库中的所有表单。这些表格有修订号。我想要做的是在列表中仅显示表单的最后一个修订版本。

为了澄清,表单表格如下所示

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 

1 个答案:

答案 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();
 },

希望它有所帮助。