私は2つのクラスUser
とRole
を持っています。ROLE_PROVIDER
ロールを持つユーザのクエリを返すQueryBuilder
を作成する必要があります。symfony 2のDoctrine 2 - アソシエーションによるQueryBuilderのフィルタリング
$builder->add('provider', 'entity', array(
'class' => 'ElCuadreAccountBundle:User',
'property' => 'username',
'query_builder' => function(UserRepository $ur) {
return $ur->getUsersByRoleQB('ROLE_PROVIDER');
},
'required' => true,
));
そして、私のカスタムUserRepository
に私は返す必要があり、以下の機能を持っている:私は、私が言及したフィールドに次のコードを持つフォームクラス定義でのSymfony 2のエンティティフォームフィールドのためにこれを必要としますQueryBuilder
オブジェクト:もちろん
public function getUsersByRoleQB($role) {
$qb = $this->createQueryBuilder('u');
return $qb->join('u.roles','r')
->where($qb->expr()->in('r.role',$qb->expr()->literal($role)))
->orderBy('u.username', 'ASC');
}
これは動作しません、しかし、私は私のニーズを説明するために、それを貼り付けました。
私はこれまで見てきましたが、Doctrine2はネイティブで関連付けによるフィルタリングをサポートしていないようです。 this pageでは、こういったことがあり、この種のフィルタリングにはDQL
を使用することを推奨します。私の問題は、文からQueryBuilder
オブジェクトを作成する方法が見つからないということです。 DQL
クエリを私にも提供できる場合、私は非常に感謝しています。
ありがとうございました!
...はるかに読みやすい$ QB-> exprの()を追加するよりもこれを見つけるありがとう!本当に完全な答え... 1つの質問、それは元の質問とはあまり関係していませんが、ここに行きます...私はsymfony 2とdoctrine 2の新しいバージョンが来ていることを何度か読んでいます。新しい機能はありますが、 'php bin/vendors install'を実行するのがうんざりです。symfonyも教義もアップグレードしていません...どうすればアップグレードできますか?またはそれらの新しいバージョンは公式になるだろうか?ご回答有難うございます!!! – Throoze
D2.2については、http://www.doctrine-project.org/をご覧ください。 S2はS2.2がリリースされるまでD2.2が統合されることはありません。ただし、D2.2を直接インストールして、autoload.phpでパスを調整することができます。ほとんどの場合、あなたの教義コードは機能するはずです。注意すべき点については、ドキュメントをチェックしてください。 – Cerad
あなたの答えをありがとう! – Throoze