2012-08-03 20 views
11

मुझे पता है कि सिद्धांत 2 में "DISTINCT" का उपयोग कैसे करें, लेकिन मुझे वास्तव में "DISTINCT ON (फ़ील्ड)" का उपयोग करने की आवश्यकता है और मुझे नहीं पता कि QueryBuilder के साथ ऐसा कैसे करें।सिद्धांत 2 में "DISTINCT ON (फ़ील्ड)" का उपयोग कैसे करें?

मेरे SQL क्वेरी की तरह दिखता है:

SELECT DISTINCT ON (currency) currency, amount FROM payments ORDER BY currency 

और इस क्वेरी सही काम करता है, लेकिन मैं QueryBuilder के साथ उपयोग नहीं कर सकते। शायद मैं इस सवाल को किसी अन्य तरीके से लिख सकता हूं?

+0

मैं "DISTINCT ON" वाक्यविन्यास से परिचित नहीं हूं। क्या यह ग्रुप बाय के समान है? – Daniel

+1

@daniel: http://www.postgresql.org/docs/current/static/sql-select.html#SQL-DISTINCT –

+0

आपने इस पोस्ट को पढ़ सकते हैं: http://stackoverflow.com/ प्रश्न/23246939/zf2-सिद्धांत-2-objectselect-साथ-अलग-ऑन-क्षेत्र – gtzinos

उत्तर

0

सिद्धांत क्वेरी बिल्डर के कुछ सीमाएं हैं। यहां तक ​​कि अगर मैंने जांच नहीं की कि क्वेरी बिल्डर के साथ यह संभव है, तो मैं क्वेरी निर्माता के साथ क्वेरी लिखने के बारे में नहीं जानता, तो मुझे डीक्यूएल का उपयोग करने में संकोच नहीं होता है।

चेक http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#dql-select-examples

आशा इस मदद पर उदाहरण शोध करे।

2

मैं सुझाव दूंगा कि SELECT DISTINCT ON (..) निर्माण करता है कि PostgreSQL समर्थन ऑब्जेक्ट रिलेशनल मॉडल (ओआरएम) के बाहर है जो सिद्धांत के लिए केंद्र है। या, शायद एक और तरीका डालें, क्योंकि SELECT DISTINCT ON (..) एसक्यूएल कार्यान्वयन में दुर्लभ है सिद्धांत ने इसके लिए कोड नहीं किया है।

इसके लिए वास्तविक तर्क के बावजूद काम नहीं कर रहा है, मैं सुझाव दूंगा कि आप सिद्धांत की "Native SQL" आज़माएं। आपको अपनी क्वेरी के परिणामों को ओआरएम में मैप करना होगा।

NativeQuery के साथ आप देशी चयन SQL कथन निष्पादित और नक्शा सिद्धांत संस्थाओं या किसी अन्य परिणाम स्वरूप में परिणाम सिद्धांत द्वारा समर्थित कर सकते हैं।

इस मैपिंग को संभव बनाने के लिए, आपको का वर्णन करना होगा, परिणामस्वरूप मानचित्र में कौन सी कॉलम संपत्ति इकाई है। यह विवरण ResultSetMapping ऑब्जेक्ट द्वारा दर्शाया गया है।

इस सुविधा के साथ आप अत्यधिक विक्रेता-अनुकूलित SQL या संग्रहीत प्रक्रियाओं के लिए मनमाने ढंग से SQL कोड मैप कर सकते हैं।

SELECT DISTINCT ON (..) में विक्रेता अनुकूलित एसक्यूएल मुझे लगता है, तो NativeQuery का उपयोग कर आप इसे उपयोग करने की अनुमति चाहिए गिर जाता है।

संबंधित मुद्दे