2016-02-29 66 views
1

我不知道我怎麼能生成表單,詢問他的生活在哪個國家的用戶表單Symfony2的。生成與其他實體和QueryBuilder的

目前這裏是我的代碼在我AnnonceType.php(形式)

$builder 
->add('idPa', 'entity', array( 
      'label' => 'Pays', 
      'class' => 'nftAnnonceBundle:Pays', 
      'query_builder' => function(EntityRepository $er) 
      {  
       return     
       $er->createQueryBuilder('p') 
       ->select('nomPa') 
       ->from('nftAnnonceBundle:Pays', 'p');      
      }, 
      'property' => 'nom_pa' 
     )) 

我在尋找定製查詢,因爲我在數據庫中有一個GEOM數據列,如果沒有學說加載我的應用程序崩潰...

要清楚,我只是想創建一個選擇字段詢問label_country(從我的數據庫)到用戶,並有一個s值id_country。 我試圖用 - > select來覆蓋createQueryBuilder()中的選擇字段,但doens't似乎工作。

[Semantical Error] line 0, col 72 near 'p': Error: 'p' is already defined. 

感謝您的幫助

+0

不應該你的查詢生成器是'$ ER-> createQueryBuilder() - >選擇( 'p.nomPa') - 從(> 'nftAnnonceBundle:支付', 'p');' – Broncha

+0

如果我沒有將別名作爲createQueryBuilder函數的參數,那麼symfony會返回一個錯誤。 – Julien

回答

0

有此錯誤消息,因爲當你做

$er->createQueryBuilder('p') 

它已經隱含創建->from('nftAnnonceBundle:Pays', 'p'); 此外,你不能在QueryBuilder的選擇所顯示的標籤,而是在choice_label屬性或實體__toString方法中。

所以,你可以做

$builder 
    ->add('idPa', 'entity', array( 
     'label' => 'Pays', 
     'class' => 'nftAnnonceBundle:Pays', 
     'choice_label' => 'nomPa' 
    )) 

如果要限制通過的EntityType表單域的性能用途裝載場看一看的official documentation

將帖子下面評論] ,你可以使用QueryBuilderdoctrine partials objects。在這種情況下,它可以是這樣的:

$builder 
    ->add('idPa', 'entity', array( 
     'label' => 'Pays', 
     'class' => 'nftAnnonceBundle:Pays', 
     'query_builder' => function(EntityRepository $er) {  
      return $er->createQueryBuilder('p')->select('partial p.{id,nomPa}')     
     }, 
     'property' => 'nom_pa' 
    )) 
+0

您好,感謝您的回覆!但是當我運行這段代碼時(我已經說實話了),doctrine正在查詢一個包含幾何值的整個對象,這使得我的應用程序因爲大量的數據加載而崩潰......我只是喜歡doctrine來選擇我的「 label_pays「而不是整個對象,包括」geom_pays「,任何想法? – Julien

+1

好吧,也許你可以嘗試[partials objects](http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/partial-objects.html)並在'queryBuilder'中使用它。就像這樣:'return $ er-> createQueryBuilder('p') - > select('partial p。{id,nomPa}')' – LFI

+0

親愛的我非常感謝你的工作! – Julien