Query_builder Symfony表单生成器错误 [英] Query_builder Symfony form builder error
问题描述
我的表单中有一个实体字段,用于显示数据库中列表中的所有表单。这些表格有版本号。我想要做的是只显示表单的最后一个修订版作为列表中的一个选项。
为了澄清,表格表看起来像这样
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屋!