2016-02-22 26 views
0

我有兩個形式的控制器內的第一種形式工作正常但是預期我的第二個表不工作。Symfony的格式錯誤:主義「式的預期參數‘ ORM QueryBuilder的’,‘學說 ORM 查詢’給予」

myController的:

// 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. 
    } 
} 

我CarType:

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

My Car Entity

Full Stack Trace

Error : "Expected argument of type "Doctrine\ORM\QueryBuilder", "Doctrine\ORM\Query" given"

Symfony的版本:2.7

+2

取出getQuery(),也許改變$查詢到$ QB只是爲了說清楚,你是在處理一個查詢生成器對象,而不是查詢對象。兩件完全不同的事情。 http://symfony.com/doc/current/reference/forms/types/entity.html#using-a-custom-query-for-the-entities。你可能會得到一個不同的錯誤。不確定對你的查詢有什麼不同。必須嘗試一下,看看。 – Cerad

+2

刪除' - > getQuery()'。如果沒有,您將返回查詢構建器,並返回查詢對象。你也可以刪除'$ query =',因爲它從來沒有用過這麼多。 – qooplmao

回答

2

query_builder(建築用你的形式),你必須返回一個QueryBuilder對象。目前,您返回一個Query對象。

中庸之道刪除getQuery()

$builder->add('makename','entity',array(
        'class'=> 'MyTestBundle:Car\CarModel', 
        'query_builder'=>function(EntityRepository $er){ 
         return $er->createQueryBuilder('s') 
            ->select('s.makename') 
            ->distinct() 
            //->getQuery(); remove this line 
       } 
+0

也將分配到$ query變量 – hasumedic

+0

我現在得到一個不同的錯誤:警告:spl_object_hash()預計參數1是對象,字符串給出 –

+0

好吧,你可以更新您的文章,並以什麼時候知道複製完整的跟蹤這個錯誤被拋出,請問這是什麼字符串? – Delphine