php - SQL JOINs with CakePHP -
मेरे पास एक यहां मेरा नियंत्रक कार्रवाई कोड है: < पूर्व> इस तरह से डेटा प्राप्त होता है: धन्यवाद। TLDR: सही सेट अप करें, और उपयोग करें। (साथ -1)। लंबे समय तक विवरण: अपने खोज कोड को मॉडल में रखने के लिए सबसे अच्छा अभ्यास है, इसलिए मैं जो दिखाऊंगा , लेकिन निस्संदेह (अगर आपको चाहिए) इसे नियंत्रक में वापस ले जाने के लिए। इसे इस तरह से करने से आप किसी भी नियंत्रक से समान छवि और सर्वर के बीच स्थापित होने वाली संस्था के कारण, आप तब पूछ सकते हैं जब आप क्वेरी में सर्वर की जानकारी "शामिल" कर सकते हैं इमेजिस। लेकिन - जब तक आप निर्दिष्ट नहीं करते कि आप अपने मॉडल को अंत में, आपके ऐप मॉोडल में, कोड: कुछ अन्य नोट चित्र तालिका और एक
सर्वर तालिका है।
छवियों में एक
server_id फ़ील्ड है जो
आईडी फ़ील्ड में
सर्वर तालिका के लिए एक विदेशी कुंजी है
सर्वर तालिका में
नाम नामक फ़ील्ड भी है, जो मुझे प्राप्त करना है।
सरणी ([0] = & gt; सरणी ([छवि] = & gt; सरणी ([आईडी] = & gt ; 103 [orig_name] = & gt; शीर्षक रहित- 5.jpg [हैश] = & gt; MnfWKk [फाइलनाम] = & gt; MnfWKk.jpg [अपलोड किए गए] = & gt; 2012-07-12 00:09:08 [दृश्य] = & gt ; 0 [album_id] = & gt; [user_id] = & gt; 15 [server_id] = & gt; 1)))
server_id के बजाय, मैं चाहता हूं
सर्वर तालिका से
नाम फ़ील्ड प्राप्त करें मैं यह कैसे प्राप्त करने के लिए अपना
find () विधि का अनुकूलन कर सकता हूं? मुझे पता है कि यह एक एसक्यूएल सम्मिलित है, लेकिन मुझे कोई पता नहीं है कि कैसे केक को सर्वर नाम पाने के लिए एक करने के लिए कहें।
getImages () फ़ंक्शन कॉल कर सकते हैं, और बस आप जो लौट आएंगे उसके आधार पर अलग-अलग पैरामीटर निकाल दें इस तरह कोडिंग के लिए लाभ यह है, आप हमेशा जानते हैं कि क्या आप क्वेरी / डेटाबेस से संबंधित कोड की खोज कर रहे हैं, आपको मॉडल में दिखना चाहिए। यह बहुत फायदेमंद होता है जब अगले व्यक्ति जो आपके कोड को देखता है, उसे खोजना नहीं पड़ता है।
$ actAs = array ('containable') चाहते हैं, तब तक "शामिल" का उपयोग नहीं कर सकते हैं;
$ recursive = -1; सेट करने के लिए यह अच्छा अभ्यास है। यह सभी मॉडल के लिए
-1 पर डिफ़ॉल्ट बनाता है यदि किसी कारण के लिए आप ऐसा करने के खिलाफ हैं, तो सुनिश्चित करें कि आप कब तक उपयोग किए जाने वाले किसी भी समय -1 के लिए पुनरावर्ती सेट करना सुनिश्चित करें। और - जब आप कंटेबल उपयोग करने के लिए सीखते हैं, तो आप कभी भी पीछे नहीं देखेंगे - यह शानदार है आप बहुत कुछ कर सकते हैं
// AppModel ******* // ... $ पुनरावर्ती = -1; // ... // छवियाँ नियंत्रक ******* // ... सार्वजनिक समारोह जो कुछ भी () {$ opts = array (); $ विकल्प ['उपयोगकर्ता'] = $ this- & gt; प्राधिकृत- & gt; उपयोगकर्ता ('आईडी'); $ छवियों = $ इस- & gt; छवि- & gt; getImages ($ opts); $ इस- & gt; सेट (कॉम्पैक्ट ( 'चित्र')); } // ... // छवि मॉडल ******* // ... सार्वजनिक $ worksAs = array ('containable'); सार्वजनिक हैसियत = सरणी ('सर्वर'); सार्वजनिक फ़ंक्शन getImages ($ opts = array ()) {$ params = array ('condtions' = & gt; सरणी ()); // विशिष्ट उपयोगकर्ता अगर (खाली ($ विकल्प ['उपयोगकर्ता'])) {array_push ($ params ['conditions'], सरणी ('Image.user_id' = & gt; $ opts ['user'])}} / / $ $ आदेश [] 'आदेश'] = 'छवि। डीईएससी अपलोड'; यदि (! खाली ($ विकल्प ['ऑर्डर'])) {$ params ['opts'] = $ opts ['order'];} / / $ $ पररम ['शामिल'] = सरणी ('सर्वर'); // नियंत्रक को डेटा वापस देता है- $ --- ('सभी', $ पैरामीटर);}
Comments
Post a Comment