0

次のような Symfony 2 フォームのエンティティ リストから選択できるようにしようとしています。

$builder->add('users', 'entity', array(
    'class' => 'AcmeHelloBundle:Country',
    'property' => '.....',
));

問題は、プロパティが現在の言語の国のラベルであるため、言語テーブルに結合してクエリを実行する必要があることです。

と の間のフォーム関係を維持するために「query_builder」オプションを使用せずにそれを行う方法はありUserますCountryか?

4

1 に答える 1

0

解決策は、「query_builder」オプションを使用してデータをフェッチし(「addSelect」を忘れずに)、「property」オプションを使用して最初の翻訳を取得することです。

$builder
            ->add('country', 'entity', array(
                'empty_value' => 'Select',
                'label' => 'form.country', 
                'class' => 'MySiteBundle:Pays', 
                'property' => 'fkLibTradG.trads[0].valeur', 
                'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
                    return $er->createQueryBuilder('p')
                    ->addSelect('tg')
                    ->addSelect('t')
                    ->join('p.fkLibTradG', 'tg')
                    ->join('tg.trads', 't')
                    ->where('t.fkLanguage = :language')
                    ->setParameter('language', 1)
                    ;

               }
            ))
           ;
于 2012-12-14T08:28:32.460 に答える