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 अभिव्यक्ति हो सकता है।