Active Record предоставляет объектно-ориентированный API для доступа к данным. Класс Active Record связан с таблицей базы данных.
Yii обеспечивает поддержку Active Record для следующих реляционных баз данных:
- MySQL 4.1 или более поздняя версия
- SQLite 2 и 3:
- PostgreSQL 7.3 или более поздняя версия
- Microsoft SQL Server 2008 или более поздняя версия
- CUBRID 9,3 или позже
- оракул
- ElasticSearch
- сфинкс
Кроме того, класс Active Record поддерживает следующие базы данных NoSQL:
- Redis 2.6.12 или более поздняя версия
- MongoDB 1.3.0 или более поздняя версия
После объявления класса Active Record (в нашем случае модель MyUser ) для отдельной таблицы базы данных, вы должны выполнить следующие шаги для запроса данных из него:
- Создайте новый объект запроса, используя метод yii \ db \ ActiveRecord :: find ().
- Создайте объект запроса.
- Вызовите метод запроса для получения данных.
Шаг 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 для запроса данных.
Шаг 2 — Перейдите по адресу http: // localhost: 8080 / index.php? R = site / test-db , вы увидите следующий вывод.

Выполнение запросов по значениям первичного ключа или набору значений столбцов является обычной задачей, поэтому Yii предоставляет следующие методы:
- yii \ db \ ActiveRecord :: findOne () — возвращает один экземпляр Active Record.
- yi \ db \ ActiveRecord :: findAll () — возвращает массив экземпляров Active Record.
yii \ db \ ActiveRecord :: findOne () — возвращает один экземпляр Active Record.
yi \ db \ ActiveRecord :: findAll () — возвращает массив экземпляров Active Record.
Пример —
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 () .
Шаг 1 — Модифицируйте метод actionTestDb () таким образом.
public function actionTestDb() {
// insert a new row of data
$user = new MyUser();
$user->name = 'MyCustomUser2';
$user->email = 'mycustomuser@gmail.com';
$user->save();
var_dump($user->attributes);
// update an existing row of data
$user = MyUser::findOne(['name' => 'MyCustomUser2']);
$user->email = 'newemail@gmail.com';
$user->save();
var_dump($user->attributes);
}
Шаг 2 — Перейдите по адресу http: // localhost: 8080 / index.php? R = site / test-db , вы увидите следующий вывод.

Чтобы удалить одну строку данных, вы должны —
- Получить экземпляр активной записи
- Вызовите метод yii \ db \ ActiveRecord :: delete ()
Получить экземпляр активной записи
Вызовите метод yii \ db \ ActiveRecord :: delete ()
Шаг 1 — Модифицируйте метод actionTestDb () таким образом.
public function actionTestDb() {
$user = MyUser::findOne(2);
if($user->delete()) {
echo "deleted";
}
}
Шаг 2 — Введите http: // localhost: 8080 / index.php? R = site / test-db в адресной строке веб-браузера, вы увидите следующий вывод.

Шаг 3 — Вы также можете вызвать метод yii \ db \ ActiveRecord :: deleteAll () для удаления, например, нескольких строк данных.