我試圖在Symfony 2.1中顯示帶optgroup的選擇框。 我的實體樹是:客戶有項目,項目有部分(Part->getProject()->getClient()
)Symfony2:在實體字段中使用group_by選項
我想顯示我的選擇框是這樣的:
<select>
<optgroup>Client name
<option>Part name</option>
<!-- ... -->
</optgroup>
<!-- ... -->
</select>
symfony的文檔並不有很大的幫助。 我工作表單生成器(無GROUP_BY選項)給了我一個簡單的選擇:
$this->createFormBuilder()
->add('part','entity',array(
'class' => 'SGLFLTSPartBundle:Part',
'property' => 'name',
'query_builder' => function (\SGL\FLTS\PartBundle\Entity\PartRepository $er) {
return $er->createQueryBuilder('p');
}))
->getForm();
如何添加GROUP_BY選項顯示客戶的名字嗎?到目前爲止,我已經試過
'group_by' => 'project.client.name'
'group_by' => 'project.client'
'group_by' => 'ppc.name' // the DQL table alias
這一切都使PHP錯誤
我還試圖以顯示項目名稱只是作爲OPTGROUP,沒有運氣:
'group_by' => 'project'
'group_by' => 'project.name'
'group_by' => 'project.id' // throws no error, giving me <optgroup label="1"> ...
,並試圖將項目/客戶端加入到createQueryBuilder中
$er->createQueryBuilder('p')->select('p, pp')->leftJoin('p.project','pp');
$er->createQueryBuilder('p')->select('p, pp.name')->leftJoin('p.project','pp')
// wrong
謝謝!
太好了,謝謝。我通過添加'group_by'選項(您編寫'property')進行了更新。另外我有一個錯誤「實體沒有找到。」在查詢內部沒有內部聯接。 – sglessard
''group_by'=>'clientName''選項背後的想法是這樣的:第120行的ObjectChoiceList將使用此對象屬性(或類方法)對對象進行分組。由於我無法直接從DQL中的連接中獲得客戶端的標題,因此我需要'getClientName'方法來爲我返回這個值。在DQL中加入相關對象應確保相關對象已經被初始化,並且不需要對集合中的每個實體調用DB。 'property'選項仍然應該是'group_by'。我的例子需要改變以適應你的環境。 – Iain
是的,我明白了。儘管如此,'createFormBuilder'例如陣列需要編輯和我一樣以前:'「屬性」 =>「名」,「GROUP_BY」 =>「CLIENTNAME」,' – sglessard