Yii - Rekaman Aktif

Rekaman Aktif menyediakan API berorientasi objek untuk mengakses data. Kelas Rekaman Aktif dikaitkan dengan tabel database.

Yii menyediakan dukungan Rekaman Aktif untuk database relasional berikut -

  • MySQL 4.1 atau yang lebih baru
  • SQLite 2 dan 3:
  • PostgreSQL 7.3 atau yang lebih baru
  • Microsoft SQL Server 2008 atau yang lebih baru
  • CUBRID 9.3 atau yang lebih baru
  • Oracle
  • ElasticSearch
  • Sphinx

Selain itu, kelas Rekaman Aktif mendukung berikut ini NoSQL database -

  • Redis 2.6.12 atau lebih baru
  • MongoDB 1.3.0 atau yang lebih baru

Setelah mendeklarasikan kelas Rekaman Aktif (MyUser model dalam kasus kami) untuk tabel database terpisah, Anda harus mengikuti langkah-langkah ini untuk meminta data darinya -

  • Buat objek kueri baru, menggunakan metode yii \ db \ ActiveRecord :: find ().
  • Buat objek kueri.
  • Panggil metode kueri untuk mengambil data.

Step 1 - Ubah actionTestDb() metode seperti ini.

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);
}

Kode yang diberikan di atas menunjukkan bagaimana menggunakan ActiveQuery untuk melakukan kueri data.

Step 2 - Pergi ke http://localhost:8080/index.php?r=site/test-db, Anda akan melihat output berikut.

Membuat kueri berdasarkan nilai kunci utama atau sekumpulan nilai kolom adalah tugas umum, itulah mengapa Yii menyediakan metode berikut -

  • yii\db\ActiveRecord::findOne() - Mengembalikan satu contoh Rekaman Aktif

  • yi\db\ActiveRecord::findAll() - Mengembalikan array contoh Rekaman Aktif

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);
}

Simpan Data ke Database

Untuk menyimpan data ke database, Anda harus memanggil yii\db\ActiveRecord::save() metode.

Step 1 - Ubah actionTestDb() metode seperti ini.

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 - Pergi ke http://localhost:8080/index.php?r=site/test-db, Anda akan melihat output berikut.

Untuk menghapus satu baris data, Anda harus -

  • Ambil contoh Rekaman Aktif

  • Panggil yii\db\ActiveRecord::delete() metode

Step 1 - Ubah actionTestDb() metode seperti ini.

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

Step 2 - Ketik http://localhost:8080/index.php?r=site/test-db di address bar browser web, Anda akan melihat output berikut.

Step 3 - Anda juga bisa menelepon yii\db\ActiveRecord::deleteAll() metode untuk menghapus beberapa baris data, misalnya.

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