Yii - क्वेरी बिल्डर

क्वेरी बिल्डर आपको प्रोग्रामेटिक तरीके से SQL क्वेरी बनाने की अनुमति देता है। क्वेरी बिल्डर आपको अधिक पढ़ने योग्य SQL-संबंधित कोड लिखने में मदद करता है।

क्वेरी बिल्डर का उपयोग करने के लिए, आपको इन चरणों का पालन करना चाहिए -

  • एक yii \ db \ Query ऑब्जेक्ट बनाएँ।
  • एक क्वेरी विधि निष्पादित करें।

निर्माण करने के लिए ए yii\db\Query ऑब्जेक्ट, आपको SQL क्वेरी के विभिन्न भागों को परिभाषित करने के लिए विभिन्न क्वेरी बिल्डर फ़ंक्शन को कॉल करना चाहिए।

Step 1 - क्वेरी बिल्डर का एक विशिष्ट उपयोग दिखाने के लिए, संशोधित करें actionTestDb इस तरह से विधि।

public function actionTestDb() {
   //generates "SELECT id, name, email FROM user WHERE name = 'User10';"
   $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where(['name' => 'User10']) ->one(); var_dump($user);
}

Step 2 - पर जाएं http://localhost:8080/index.php?r=site/test-db, आप निम्न आउटपुट देखेंगे।

कहाँ () फ़ंक्शन

where()फ़ंक्शन एक क्वेरी के WHERE टुकड़े को परिभाषित करता है। निर्दिष्ट करने के लिएWHERE शर्त, आप तीन प्रारूपों का उपयोग कर सकते हैं।

  • string format - 'नाम = उपयोगकर्ता 10'

  • hash format - ['नाम' => 'उपयोगकर्ता 10', 'ईमेल => [email protected]']

  • operator format - ['लाइक', 'नाम', 'यूजर']

स्ट्रिंग प्रारूप का उदाहरण

public function actionTestDb() {
   $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where('name = :name', [':name' => 'User11']) ->one(); var_dump($user);
}

निम्नलिखित उत्पादन होगा।

हैश प्रारूप का उदाहरण

public function actionTestDb() {
   $user = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where([ 'name' => 'User5', 'email' => '[email protected]' ]) ->one(); var_dump($user);
}

निम्नलिखित उत्पादन होगा।

ऑपरेटर प्रारूप आपको निम्नलिखित प्रारूप में मनमानी स्थितियों को परिभाषित करने की अनुमति देता है -

[operator, operand1, operand2]

ऑपरेटर हो सकता है -

  • and - ['और', 'आईडी = १', 'आईडी = २'] आईडी = १ और आईडी = २ या उत्पन्न करेगा: ऑपरेटर और ऑपरेटर के समान

  • between - ['के बीच', 'आईडी', १, १५] आईडी से १ और १५ का आईडी जनरेट करेगा

  • not between - बीच में ऑपरेटर के समान है, लेकिन BETWEEN को NOT BETWEEN से बदल दिया गया है

  • in - ['में', 'आईडी', [5,10,15]] आईडी जनरेट करेगा (5,10,15)

  • not in - ऑपरेटर के समान, लेकिन IN को IN के साथ नहीं बदला जाता है

  • like - ['like', 'name', 'user'] 'LIKE'% user% नाम जनरेट करेगा।

  • or like - जैसे ऑपरेटर के समान, लेकिन OR का उपयोग LIKE विधेयकों को विभाजित करने के लिए किया जाता है

  • not like - जैसे ऑपरेटर के समान, लेकिन LIKE को NOT LIKE से बदल दिया जाता है

  • or not like - ऑपरेटर के समान नहीं है, लेकिन OR का उपयोग NOT LIKE की भविष्यवाणी करने के लिए किया जाता है

  • exists - एक ऑपरेंड की आवश्यकता होती है जो yii \ db \ Query वर्ग का एक उदाहरण होना चाहिए

  • not exists - मौजूद ऑपरेटर के समान, लेकिन एक एक्जिट (उपश्रेणी) अभिव्यक्ति नहीं बनाता है

  • <, <=, >, >=, या कोई अन्य DB ऑपरेटर: ['<', 'आईडी', १०] आईडी १० उत्पन्न करेगा

ऑपरेटर प्रारूप का उदाहरण

public function actionTestDb() {
   $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->where(['between', 'id', 5, 7]) ->all(); var_dump($users);
}

निम्नलिखित उत्पादन होगा।

आर्डरबाय () फंक्शन

orderBy() समारोह खंड द्वारा आदेश को परिभाषित करता है।

Example -

public function actionTestDb() {
   $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->orderBy('name DESC') ->all(); var_dump($users);
}

निम्नलिखित उत्पादन होगा।

groupBy () फ़ंक्शन

groupBy() समारोह, जबकि टुकड़ा द्वारा समूह को परिभाषित करता है having() विधि HAVING टुकड़ा निर्दिष्ट करता है।

Example -

public function actionTestDb() {
   $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->groupBy('name') ->having('id < 5') ->all(); var_dump($users);
}

निम्नलिखित उत्पादन होगा।

limit() तथा offset() विधियाँ परिभाषित करती हैं LIMIT तथा OFFSET टुकड़े टुकड़े।

Example -

public function actionTestDb() {
   $users = (new \yii\db\Query()) ->select(['id', 'name', 'email']) ->from('user') ->limit(5) ->offset(5) ->all(); var_dump($users);
}

आप निम्न आउटपुट देख सकते हैं -

yii\db\Query वर्ग विभिन्न प्रयोजनों के लिए तरीकों का एक सेट प्रदान करता है -

  • all() - नाम-मान जोड़े की पंक्तियों की एक सरणी देता है।

  • one() - पहली पंक्ति लौटाता है।

  • column() - पहला कॉलम लौटाता है।

  • scalar() - परिणाम की पहली पंक्ति और पहले कॉलम से एक स्केलर मान लौटाता है।

  • exists() - मान बताता है कि क्वेरी में कोई परिणाम है या नहीं

  • count() COUNT क्वेरी का परिणाम देता है

  • other aggregation query methods - इसमें शामिल हैं ($q), average($q), अधिकतम ($q), min($क्यू)। $ Q पैरामीटर या तो कॉलम नाम या DB अभिव्यक्ति हो सकता है।