Yii-アクティブレコード
Active Recordは、データにアクセスするためのオブジェクト指向APIを提供します。ActiveRecordクラスはデータベーステーブルに関連付けられています。
Yiiは、次のリレーショナルデータベースのアクティブレコードサポートを提供します-
- MySQL4.1以降
 - SQLite 2および3:
 - PostgreSQL7.3以降
 - Microsoft SQL Server2008以降
 - CUBRID9.3以降
 - Oracle
 - ElasticSearch
 - Sphinx
 
さらに、ActiveRecordクラスは以下をサポートします NoSQL データベース-
- Redis2.6.12以降
 - MongoDB1.3.0以降
 
Active Recordクラスを宣言した後(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は次のメソッドを提供します。
yii\db\ActiveRecord::findOne() −単一のActiveRecordインスタンスを返します
yi\db\ActiveRecord::findAll() − ActiveRecordインスタンスの配列を返します
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、次の出力が表示されます。
                1行のデータを削除するには、次のようにする必要があります。
ActiveRecordインスタンスを取得します
を呼び出す 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 Webブラウザのアドレスバーに次の出力が表示されます。
                Step 3 −電話することもできます yii\db\ActiveRecord::deleteAll() たとえば、複数行のデータを削除する方法。
public function actionTestDb() {
    MyUser::deleteAll('id >= 20');
}