इसलिए जब मैं अपने मॉडल में भाग लेता हूं तो ऐसी स्थिति होती है जहां मेरे मॉडल या तो शुरू होते हैं:
- टन और तरीकों के टन के साथ राक्षसों में बढ़ो
या
- आप उन्हें एसक्यूएल के टुकड़े पास करने की अनुमति दें, ताकि वे एक लाख अलग-अलग तरीकों की आवश्यकता न होने के लिए पर्याप्त लचीले हों
उदाहरण के लिए, मान लें कि हमारे पास "विजेट" मॉडल है। हम कुछ बुनियादी तरीकों से शुरू करते हैं:
- मिल ($ आईडी)
- सम्मिलित ($ रिकॉर्ड)
- अद्यतन ($ आईडी, $ रिकॉर्ड)
- हटाएँ ($ आईडी)
- getList () // विजेट्स की एक सूची प्राप्त करें
यह सब ठीक है और बांका है, लेकिन फिर हमें कुछ रिपोर्टिंग की आवश्यकता है:
- सूची बनाएंबेटन ($ start_date, $ end_date)
- सूचीपार्टेडबेटन ($ start_date, $ end_date)
- listOfPending ()
और फिर रिपोर्टिंग जटिल होने लगती है:
- सूचीपसंद करेंबेट की सूची ($ start_date, $ end_date)
- listForCustomer ($ CUSTOMER_ID)
- सूचीकरण
आप देख सकते हैं कि यह कहाँ बढ़ रहा है ... आखिरकार हमारे पास कई विशिष्ट क्वेरी आवश्यकताएं हैं जो मुझे या तो टन और विधियों को लागू करने की आवश्यकता है, या किसी प्रकार की "क्वेरी" ऑब्जेक्ट जिसे मैं एक एकल -> क्वेरी (क्वेरी) में पारित कर सकता हूं $ क्वेरी) विधि ...
... या बस गोली को काटो, और कुछ ऐसा करना शुरू करो:
- सूची = MyModel-> क्वेरी ("start_date> X और end_date <Y और लंबित = 1 और customer_id = Z")
50 मिलियन अन्य विशिष्ट तरीकों के बजाय सिर्फ एक ही तरीका रखने की एक निश्चित अपील है ... लेकिन यह कभी-कभी "गलत" लगता है कि मूल रूप से नियंत्रक में SQL क्या है।
क्या इस तरह की स्थितियों को संभालने का एक "सही" तरीका है? क्या यह एक सामान्य -> क्वेरी () पद्धति की तरह प्रश्नों को भरा जाना स्वीकार्य लगता है?
क्या बेहतर रणनीतियाँ हैं?