bir QueryBuilder filtreleme. Ben şu sözü alan için pasajı var Formu Sınıf tanımda Symfony'de 2. bir varlık formu alanı için bu gerekir: Benim Custom UserRepository
sonraDoktrini 2 - Benim iki sınıfları <code>User</code> ve <code>Role</code> var ve ben <code>ROLE_PROVIDER</code> role sahip kullanıcılar için bir sorgu döndüren bir <code>QueryBuilder</code> yapmak gerekir bir dernek
$builder->add('provider', 'entity', array(
'class' => 'ElCuadreAccountBundle:User',
'property' => 'username',
'query_builder' => function(UserRepository $ur) {
return $ur->getUsersByRoleQB('ROLE_PROVIDER');
},
'required' => true,
));
oysa benim bir dönmelidir aşağıdaki fonksiyonu, QueryBuilder
nesnesi:
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');
}
tabii bu işe yaramazsa, ama benim ihtiyaçlarını getirmek için o yapıştırılan.
Etrafa baktım ve Doctrine2 bir ilişkilendirmeyle doğal olarak filtrelemeyi desteklemiyor gibi görünüyor. this page'da, bu tür bir filtreleme için DQL
kullanmanızı öneririz. Benim sorunum, DQL
cümlesinden QueryBuilder
nesnesini nasıl oluşturduğumu bulamadım. Eğer bana doğru DQL
sorgusu sağlayabilirseniz, ben çok minnettar olurum ...
Yardımlarınız için teşekkürler!
teşekkürler! Gerçekten tam bir cevap ... Bir soru, orijinal soruyla çok ilgili değil, ama ben gidiyorum ... Symfony 2 ve doktrin 2'nin yeni sürümlerinin geldiği birkaç kez okudum ve insanlar yeni özellikler, ama 'php bin/vendors install' çalıştırmayı denemekten yoruldum ve ne symfony ne de doktrini yükseltmiyor ... nasıl yükseltebilirim? ya da bu yeni sürümler ne zaman resmi olacak? Cevabınız için teşekkürler!!! – Throoze
D2.2 hakkında buradan bilgi alabilirsiniz: http://www.doctrine-project.org/. S2, muhtemelen S2.1 yayınlanana kadar D2.2'ye sahip olmayacak, muhtemelen bu yaz. Ancak, D2.2'yi doğrudan yükleyebilir, autoload.php'deki yollarınızı ayarlayabilirsiniz ve çoğu zaman doktrin kodunuz çalışmalıdır. Dikkat edilmesi gereken şeyler için dokümanlar kontrol edin. – Cerad
Yanıtlarınız için teşekkürler! – Throoze