【发布时间】:2016-02-22 15:06:49
【问题描述】:
我在控制器中有两个表单,第一个表单可以正常工作,但是我的第二个表单无法按预期工作。
我的控制器:
// Second Form
$formTwo = $this->get('form.factory')->createNamedBuilder('form2name', new CarType(), null, array())
->getForm();
if('POST' === $request->getMethod()) {
if ($request->request->has('form1name')) {
// handle the first form
}
if ($request->request->has('form2name')) {
// handle the second form
// get the id value of the selected value.
}
}
我的车型:
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->add('makename','entity',array(
'class'=> 'MyTestBundle:Car\CarModel',
'query_builder'=>function(EntityRepository $er){
return $query = $er->createQueryBuilder('s')
->select('s.makename')
->distinct()
->orderBy('s.makename','ASC');
}
));
$builder->add('search','submit',array());
}
错误:“类型为“Doctrine\ORM\QueryBuilder”的预期参数,给出了“Doctrine\ORM\Query””
Symfony 版本:2.7
【问题讨论】:
-
删除 getQuery() 并可能将 $query 更改为 $qb 只是为了清楚地表明您正在处理查询构建器对象而不是查询对象。两种截然不同的东西。 symfony.com/doc/current/reference/forms/types/…。你可能会得到一个不同的错误。不确定 distinct 会对您的查询产生什么影响。一定要试试看。
-
删除
->getQuery()。没有它,您将返回查询构建器,并使用它返回一个查询对象。您也可以删除$query =,因为它从未如此冗余。
标签: php symfony orm doctrine-orm