Symfony2.1でoptgroupsを含む選択ボックスを表示しようとしています。私のエンティティツリーは次のとおりです。クライアントにはプロジェクトがあり、プロジェクトにはパーツがあります(Part->getProject()->getClient()
)
選択ボックスをこのように表示したい:
<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
ありがとう!