Query_builder Symfony表单生成器错误 [英] Query_builder Symfony form builder error

查看:96
本文介绍了Query_builder Symfony表单生成器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的表单中有一个实体字段,用于显示数据库中列表中的所有表单。这些表格有版本号。我想要做的是只显示表单的最后一个修订版作为列表中的一个选项。



为了澄清,表格表看起来像这样

  Id ||名称|| 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');
}
))

但是我得到这个错误

 警告:spl_object_hash()期望参数1是对象,字符串给出


解决方案

我也遇到过这个问题。



'query_builder'选项应该返回Doctrine \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'应该返回一个Doctrine \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\奇怪的是,正确的...



我所做的是在实体库中创建一个方法,它返回查询构建器本身:

  public function generateStaffRolesQB(){
$ qb = $ this-> getEntityManager() - > createQueryBuilder();
$ qb-> select('r')
- > from('DatabaseModelsBundle:Role','r')
- > where('r.id IN ,2)');

return $ qb;
}

然后在表单中使用它:

 'query_builder'=>函数(EntityRepository $ er){
return $ er-> generateStaffRolesQB();
},

希望它有帮助。


I have an entity field in my form that shows all forms in the database in a list. These forms have revision numbers. What I want to do is to show only the last revision of a form as an option in the list.

To clarify, the form table looks like this

Id || Name || Revision_number

1  || Form1 || 1

2  || Form1 || 2

The select list should only show revision 2.

So far, I have tried this

->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');
                }
            ))

But I get this error

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

解决方案

I've faced this problem too.

'query_builder' option should return Doctrine\ORM\QueryBuilder or a Closure and in your case (someone correct me if I am wrong) the "select" method is supposed to return a Doctrine\ORM\QueryBuilder object too. Weird, right...

What I did was create a method in the entity repository that returns the query builder itself:

public function generateStaffRolesQB() {
    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb->select('r')
            ->from('DatabaseModelsBundle:Role', 'r')
            ->where('r.id IN (1, 2)');

    return $qb;
}

And in the form I use it like this:

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

Hope it helps.

这篇关于Query_builder Symfony表单生成器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆