Yii - डेटा एक्सेस ऑब्जेक्ट

अमल करना SQL query, आपको इन चरणों का पालन करना चाहिए -

  • SQL क्वेरी के साथ yii \ db \ Command बनाएं ।
  • बाइंड पैरामीटर (आवश्यक नहीं)
  • आदेश निष्पादित करें।

Step 1 - नामक एक फंक्शन बनाएं actionTestDb SiteController में।

public function actionTestDb(){
   // return a set of rows. each row is an associative array of column names and values.
   // an empty array is returned if the query returned no results
   $users = Yii::$app->db->createCommand('SELECT * FROM user LIMIT 5')
      ->queryAll();
   var_dump($users); // return a single row (the first row) // false is returned if the query has no result $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE id=1') ->queryOne(); var_dump($user);
   // return a single column (the first column)
   // an empty array is returned if the query returned no results
   $userName = Yii::$app->db->createCommand('SELECT name FROM user')
      ->queryColumn();
   var_dump($userName); // return a scalar value // false is returned if the query has no result $count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM user') ->queryScalar(); var_dump($count);
}

उपरोक्त उदाहरण एक DB से डेटा लाने के विभिन्न तरीकों को दर्शाता है।

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

SQL कमांड बनाएँ

मापदंडों के साथ एक SQL कमांड बनाने के लिए, आपको हमेशा SQL इंजेक्शन को रोकने के लिए बाध्यकारी मापदंडों के दृष्टिकोण का उपयोग करना चाहिए।

Step 1 - संशोधित करें actionTestDb इस तरह से विधि।

public function actionTestDb() {
   $firstUser = Yii::$app->db->createCommand('SELECT * FROM user WHERE id = :id')
      ->bindValue(':id', 1)
      ->queryOne();
   var_dump($firstUser); $params = [':id' => 2, ':name' => 'User2'];
   $secondUser = Yii::$app->db->createCommand('SELECT * FROM user WHERE
      id = :id AND name = :name')
      ->bindValues($params) ->queryOne(); var_dump($secondUser);
      //another approach
   $params = [':id' => 3, ':name' => 'User3']; $thirdUser = Yii::$app->db->createCommand('SELECT * FROM user WHERE id = :id AND name = :name', $params)
      ->queryOne();
   var_dump($thirdUser);
}

उपरोक्त कोड में -

  • bindValue() - एकल पैरामीटर मान को बांधता है।

  • bindValues() - कई पैरामीटर मानों को बांधता है।

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

INSERT, UPDATE और DELETE Queries

INSERT, UPDATE, और DELETE क्वेरीज़ के लिए, आप इन्सर्ट (), अपडेट (), और डिलीट () मेथड कह सकते हैं।

Step 1 - संशोधित करें actionTestDb इस तरह से विधि।

public function actionTestDb() {
   public function actionTestDb(){
      // INSERT (table name, column values)
      Yii::$app->db->createCommand()->insert('user', [
         'name' => 'My New User',
         'email' => '[email protected]',
      ])->execute();
      $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE name = :name')
         ->bindValue(':name', 'My New User')
         ->queryOne();
      var_dump($user); // UPDATE (table name, column values, condition) Yii::$app->db->createCommand()->update('user', ['name' => 'My New User
         Updated'], 'name = "My New User"')->execute();
      $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE name = :name')
         ->bindValue(':name', 'My New User Updated')
         ->queryOne();
      var_dump($user); // DELETE (table name, condition) Yii::$app->db->createCommand()->delete('user', 'name = "My New User
         Updated"')->execute();
      $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE name = :name')
         ->bindValue(':name', 'My New User Updated')
         ->queryOne();
      var_dump($user);
   }
}

Step 2 - URL टाइप करें http://localhost:8080/index.php?r=site/test-db वेब ब्राउज़र के एड्रेस बार में और आपको निम्न आउटपुट दिखाई देगा।