द्वारा एक QueryBuilder फ़िल्टर करना मैं अपने दो वर्गों User
और Role
है, और मैं एक QueryBuilder
जो ROLE_PROVIDER
भूमिका है जो उपयोगकर्ताओं के लिए एक प्रश्न रिटर्न बनाने की जरूरत है। मैं Symfony 2 में एक इकाई के रूप क्षेत्र पर्चा कक्षा परिभाषा मैंने कहा क्षेत्र के लिए निम्नलिखित स्निपेट है में के लिए इस की जरूरत है:सिद्धांत 2 Symfony 2 में - एक संघ
$builder->add('provider', 'entity', array(
'class' => 'ElCuadreAccountBundle:User',
'property' => 'username',
'query_builder' => function(UserRepository $ur) {
return $ur->getUsersByRoleQB('ROLE_PROVIDER');
},
'required' => true,
));
और फिर अपने कस्टम UserRepository
में मैं निम्नलिखित समारोह है, जो एक लौटना चाहिए 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
का उपयोग करने का सुझाव देते हैं। मेरी समस्या यह है कि मुझे ऑब्जेक्ट को DQL
वाक्य से बनाने का तरीका नहीं मिला है। यदि आप मुझे DQL
क्वेरी के साथ भी प्रदान कर सकते हैं, तो मैं बहुत आभारी हूं ...
आपकी मदद के लिए धन्यवाद!
धन्यवाद! वास्तव में पूरा जवाब ... एक प्रश्न, यह मूल प्रश्न से बहुत संबंधित नहीं है, लेकिन यहां मैं जाता हूं ... मैंने कई बार पढ़ा है कि सिम्फनी 2 और सिद्धांत 2 के नए संस्करण आ रहे हैं, और लोगों को ज्ञान है नई विशेषताएं, लेकिन मैं 'php bin/विक्रेताओं इंस्टॉल' चलाने से थक गया हूं, और यह न तो सिम्फनी और न ही सिद्धांत को अपग्रेड करता है ... मैं अपग्रेड कैसे कर सकता हूं? या उन नए संस्करण कब आधिकारिक होने जा रहे हैं ??? आपके उत्तर के लिए धन्यवाद!!! – Throoze
आप यहां डी 2.2 के बारे में पढ़ सकते हैं: http://www.doctrine-project.org/। एस 2 में एस 2.1 जारी होने तक एस 2 में एकीकृत नहीं होगा, शायद इस गर्मी में। हालांकि आप सीधे D2.2 इंस्टॉल कर सकते हैं, autoload.php में अपने पथ समायोजित कर सकते हैं और, अधिकांश भाग के लिए, आपके सिद्धांत कोड को काम करना चाहिए। चीजों को देखने के लिए दस्तावेज़ों की जांच करें। – Cerad
आपके उत्तरों के लिए धन्यवाद! – Throoze