लारवेल में, टेबल प्रॉपर्टी का उपयोग करके मॉडल की संबंधित तालिका को परिभाषित करना आम है, जैसे:
class User extends Model { protected $table = 'users'; }
हालाँकि, किसी तालिका पर सीधे मैप करने के बजाय, हम एक सबक्वेरी का उपयोग कर सकते हैं। यह तकनीक हमें एप्लिकेशन परत के भीतर जटिल प्रश्नों को समाहित करने की अनुमति देती है, डेटाबेस दृश्य बनाने की तरह, लेकिन एलोकेंट ऑपरेशंस के अतिरिक्त लचीलेपन के साथ।
उदाहरण के लिए, एक उपयोगकर्ता तालिका पर विचार करें जो व्यवस्थापक और नियमित उपयोगकर्ताओं दोनों के बारे में जानकारी संग्रहीत करती है। हम सबक्वेरी का उपयोग करके एक एडमिनयूज़र मॉडल बना सकते हैं:
class AdminUser { public function getTable(): string|\Illuminate\Contracts\Database\Query\Expression { $sql = User::query() ->select('id', 'name') ->where('admin_user', true) ->toRawSql(); return DB::raw(sprintf('(%s) as admin_users', $sql)); } }
यह मॉडल एक सबक्वेरी से डेटा खींचता है (उन उपयोगकर्ताओं से आईडी, नाम का चयन करें जहां admin_user = 1), जिससे आप इसे एक मानक मॉडल की तरह क्वेरी कर सकते हैं:
AdminUser::query()->get();
या
AdminUser::query()->first();
हालाँकि, ध्यान रखें कि कुछ क्वेरीज़, जैसे कि ढूँढें(1), सीधे काम नहीं करेंगी:
AdminUser::query()->find(1);
इससे निपटने के लिए, आप पहले() के साथ संयुक्त एक शर्त का उपयोग कर सकते हैं:
AdminUser::query()->where('id', 1)->first();
प्रदान किया गया उदाहरण इस बात का सीधा उदाहरण है कि हम एक मॉडल के भीतर तर्क की संरचना कैसे कर सकते हैं। हालाँकि, इस दृष्टिकोण को अधिक जटिल परिदृश्यों को समायोजित करने के लिए बढ़ाया और अनुकूलित किया जा सकता है। ऐसी संरचनाओं का लाभ उठाकर, हम जटिल तर्क को कुशलतापूर्वक प्रबंधित और निकाल सकते हैं, यह सुनिश्चित करते हुए कि जटिलता बढ़ने के साथ-साथ हमारे मॉडल व्यवस्थित, रखरखाव योग्य और स्केलेबल बने रहें।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3