"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > शानदार ट्रिक: सबक्वेरी से लारवेल मॉडल

शानदार ट्रिक: सबक्वेरी से लारवेल मॉडल

2024-11-03 को प्रकाशित
ब्राउज़ करें:546

Eloquent Trick: Laravel Model from Subquery

लारवेल में, टेबल प्रॉपर्टी का उपयोग करके मॉडल की संबंधित तालिका को परिभाषित करना आम है, जैसे:

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();

निष्कर्ष

प्रदान किया गया उदाहरण इस बात का सीधा उदाहरण है कि हम एक मॉडल के भीतर तर्क की संरचना कैसे कर सकते हैं। हालाँकि, इस दृष्टिकोण को अधिक जटिल परिदृश्यों को समायोजित करने के लिए बढ़ाया और अनुकूलित किया जा सकता है। ऐसी संरचनाओं का लाभ उठाकर, हम जटिल तर्क को कुशलतापूर्वक प्रबंधित और निकाल सकते हैं, यह सुनिश्चित करते हुए कि जटिलता बढ़ने के साथ-साथ हमारे मॉडल व्यवस्थित, रखरखाव योग्य और स्केलेबल बने रहें।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/bedram-tamang/eloquent-trick-laravel-model-from-subquery-4im6?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3