ऑर्डरबी विधि को सॉर्टिंग उद्देश्यों (जैसे 's.author' या 's.title') के लिए सॉन्ग के क्षेत्र को स्वीकार करना चाहिए, और यादृच्छिक मान नहीं। यहां तक कि अगर आपने ऑर्डर करने के लिए यादृच्छिक फ़ील्ड चुना है, जैसे कि php में यादृच्छिक रूप से चयन करना, यह बिल्कुल यादृच्छिक नहीं होगा, क्योंकि आप हमेशा मौजूदा प्रकार के मानदंडों के लिए पहला परिणाम प्राप्त करने जा रहे हैं। यदि आपके गीतों में 8 फ़ील्ड हैं, तो आपको अपने खोज परिणामों में केवल 8 अलग-अलग गाने मिलेंगे, भले ही आपके पास हजारों संग्रहीत हों।
$qb1->select('s')
->from('\My\Entity\Song', 's')
->where('s.id <> ?1')
->setMaxResults(1)
->setParameters(array(1=>$current->id))
->setFirstResult($offset);
यहाँ, एक यादृच्छिक मूल्य आप() या mt_rand() फ़ंक्शन रैंड के माध्यम से php में प्राप्त किया जा सकता है ऑफसेट $:
यहाँ एक सुझाव है। बेशक, $ ऑफसेट गाने की कुल संख्या से छोटा होना चाहिए। यह सिर्फ एक सुझाव है, आप इसे पूरा करने के कई तरीके हैं।
आईएमएचओ मुझे लगता है कि डॉक्टर 2 एक असाधारण ओआरएम है, और ऐसा कुछ भी उन्नत नहीं है। मुझे लगता है कि आप संदर्भ मार्गदर्शिका के Query Builder अनुभाग को पढ़ते हैं, लेकिन मैं यह भी सुझाव देता हूं कि आप DQL अनुभाग पढ़ें, जो बताता है कि सिद्धांत क्वेरी सिस्टम के भीतर उपलब्ध फ़ंक्शंस क्या हैं और आप अपना स्वयं का (कैसे) बना सकते हैं।
[यहां] (http://www.doctrine-project.org/documentation/manual/1_2/hu/dql-doctrine-query-language:order-by-clause:using-random-order) और [यहां] (http://www.onepie.org/2009/12/21/fetch-a-random-record-with-doctrine/) सिद्धांत 1.2 में दो उदाहरण हैं। मुझे लगता है कि कुछ ऐसा ही सिद्धांत के लिए काम करेगा 2. –