Friday 15 January 2010

php - Extract IDs from ArrayCollection to compare to array of IDs -


अच्छा दिन,

मेरे पास एक वर्ग कारें और वर्ग कई प्रकार के संबंध में कार प्रकार , कार में CarTypes के एक ArrayCollection होते हैं। मैं कई चुनिंदा कार प्रकार (सरणी में दिए गए फ़ॉर्म से) के संतोषजनक कारों को खोजना चाहता हूं।

अब तक मैं केवल तीन नेस्टेड लूप, कारों से पहले, id एस सरणी (फ़ॉर्म से) और ArrayCollection < कारों में कारों की की / strong> जांचने के लिए कि दूसरे लूप से मान 3 में मौजूद है।

मैंने पहले ही क्लोजर से संबंधित लिंक्स को नीचे से चेक कर दिया है I लेकिन डॉक्स के इन या कोई भी लिंक आईडी से आईडी के खिलाफ चयनित आईडी से ArrayCollection से मिलान करने के तरीके पर पर्याप्त विवरण प्रदान करता है। < मौजूद है

ArrayCollection , शायद निम्न की तरह कुछ:

  सार्वजनिक फ़ंक्शन मौजूद है CarTypes ($ ctArray) {$ CarTypes = $ this- & gt; CarTypes; $ कारटाइप- & gt; लौटें (फ़ंक्शन ($ कारटिप्प) का उपयोग करें ($ ctArray) {if_array ($ ctArray, $ CarTypes- & gt; getId ())) {वापस सत्य;} वापसी झूठी;}); }  

लेकिन यह काम नहीं कर रहा है, ऐसा करने का एक बेहतर तरीका है, कृपया कोई अच्छा दस्तावेज लिंक उपलब्ध कराएं।

कुछ अन्य भाषा या आर्किटेक्चर के साथ कार श्रेणी पर एक कारक खोज को स्थिर तरीके से लागू करने का अर्थ हो सकता है। हालांकि, जिस तरह से सिद्धांत ORM एक इकाई की खोज को लागू करने के लिए सही जगह काम करता है, वह एक कस्टम रिपॉज़िटरी क्लास में होता है।

इस तरह से एक खोज करने का एक बेहतर तरीका हो सकता है लेकिन यह मैंने जिस तरह से किया है अतीत में किया गया था (मैं मान रहा हूँ कि आप किसी संस्था में एक कस्टम रिपॉजिटरी कैसे जोड़ सकते हैं, क्योंकि आप उन्हें अपने प्रश्न में बताते हैं):

  वर्ग CarRepository EntityRepository विस्तारित {सार्वजनिक विधि findByCarTypes ( सरणी $ carTypeIds) {यदि (! Count ($ carTypeIds)) {नई ArrayCollection () लौटें; } $ CarTypesCondition = ''; $ मापदंड = सरणी (); ($ I = 1; $ i & lt; = count ($ carTypeIds); $ i ++) {यदि (! खाली ($ carTypesCondition)) {$ carTypesCondition। = 'OR'; } $ CarTypesCondition। = 'CarType.id =: carTypeId' $ I; $ पैरामीटर ['कारटाइपआईडी' $ I] = $ कारटाइप इडीज [$ i-1]; } $ QueryBuilder = $ this- & gt; createQueryBuilder ('कार') - & gt; आंतरिकजोइन ('कार केरैप्स', 'कार टाइप', 'साथ', $ कार प्रकार की व्यवस्था); - & gt; setParameters ($ मापदंडों); $ Query = $ queryBuilder- & gt; getQuery (); $ कार = $ क्वेरी- & gt; getResult (); $ कार लौटें; }}  

NB - मैंने इस कोड को एक और जटिल विधि से निकाला है ताकि कोई गारंटी न हो कि यह त्रुटि मुक्त है!


No comments:

Post a Comment