Yii - सक्रिय रिकॉर्ड

सक्रिय रिकॉर्ड डेटा तक पहुंचने के लिए एक वस्तु-उन्मुख एपीआई प्रदान करता है। एक सक्रिय रिकॉर्ड वर्ग डेटाबेस तालिका के साथ जुड़ा हुआ है।

Yii निम्नलिखित संबंध डेटाबेस के लिए सक्रिय रिकॉर्ड समर्थन प्रदान करता है -

  • MySQL 4.1 या बाद में
  • SQLite 2 और 3:
  • PostgreSQL 7.3 या बाद का
  • Microsoft SQL Server 2008 या बाद में
  • CUBRID 9.3 या बाद का
  • Oracle
  • ElasticSearch
  • Sphinx

इसके अतिरिक्त, सक्रिय रिकॉर्ड वर्ग निम्न का समर्थन करता है NoSQL डेटाबेस -

  • रेडिस 2.6.12 या बाद में
  • MongoDB 1.3.0 या बाद का

सक्रिय रिकॉर्ड वर्ग घोषित करने के बाद (MyUser एक अलग डेटाबेस तालिका के लिए हमारे मामले में मॉडल), आपको डेटा से क्वेरी करने के लिए इन चरणों का पालन करना चाहिए -

  • Yii \ db \ ActiveRecord :: find () पद्धति का उपयोग करके एक नई क्वेरी ऑब्जेक्ट बनाएं।
  • क्वेरी ऑब्जेक्ट बनाएँ।
  • डेटा पुनर्प्राप्त करने के लिए एक क्वेरी विधि को कॉल करें।

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

public function actionTestDb() {
   // return a single user whose ID is 1
   // SELECT * FROM `user` WHERE `id` = 1
   $user = MyUser::find() ->where(['id' => 1]) ->one(); var_dump($user);
   // return the number of users
   // SELECT COUNT(*) FROM `user`
   $users = MyUser::find() ->count(); var_dump($users);
   // return all users and order them by their IDs
   // SELECT * FROM `user` ORDER BY `id`
   $users = MyUser::find() ->orderBy('id') ->all(); var_dump($users);
}

ऊपर दिए गए कोड से पता चलता है कि डेटा को क्वेरी करने के लिए ActiveQuery का उपयोग कैसे करें।

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

प्राथमिक कुंजी मानों या स्तंभ मानों का एक सेट द्वारा क्वेरी करना एक सामान्य कार्य है, यही कारण है कि वाईआईआई निम्नलिखित तरीके प्रदान करता है -

  • yii\db\ActiveRecord::findOne() - एकल सक्रिय रिकॉर्ड उदाहरण लौटाता है

  • yi\db\ActiveRecord::findAll() - सक्रिय रिकॉर्ड उदाहरणों की एक सरणी देता है

Example -

public function actionTestDb() {
   // returns a single customer whose ID is 1
   // SELECT * FROM `user` WHERE `id` = 1
   $user = MyUser::findOne(1); var_dump($user);
   // returns customers whose ID is 1,2,3, or 4
   // SELECT * FROM `user` WHERE `id` IN (1,2,3,4)
   $users = MyUser::findAll([1, 2, 3, 4]); var_dump($users);
   // returns a user whose ID is 5
   // SELECT * FROM `user` WHERE `id` = 5
   $user = MyUser::findOne([ 'id' => 5 ]); var_dump($user);
}

डेटाबेस के लिए डेटा सहेजें

डेटाबेस में डेटा को बचाने के लिए, आपको कॉल करना चाहिए yii\db\ActiveRecord::save() तरीका।

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

public function actionTestDb() {
   // insert a new row of data
   $user = new MyUser(); $user->name = 'MyCustomUser2';
   $user->email = '[email protected]'; $user->save();
   var_dump($user->attributes); // update an existing row of data $user = MyUser::findOne(['name' => 'MyCustomUser2']);
   $user->email = '[email protected]'; $user->save();
   var_dump($user->attributes);
}

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

डेटा की एक पंक्ति को हटाने के लिए, आपको चाहिए -

  • सक्रिय रिकॉर्ड आवृत्ति प्राप्त करें

  • बुलाएं yii\db\ActiveRecord::delete() तरीका

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

public function actionTestDb() {
   $user = MyUser::findOne(2);
   if($user->delete()) {
      echo "deleted";
   } 
}

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

Step 3 - आप भी कॉल कर सकते हैं yii\db\ActiveRecord::deleteAll() उदाहरण के लिए, डेटा की कई पंक्तियों को हटाने की विधि।

public function actionTestDb() {
    MyUser::deleteAll('id >= 20');
}