Yii DAO (объект доступа к базе данных) предоставляет API для доступа к базам данных. Он также служит основой для других методов доступа к базе данных: активной записи и построителя запросов.
Yii DAO поддерживает следующие базы данных —
- MySQL
- MSSQL
- SQLite
- MariaDB
- PostgreSQL
- ORACLE
- CUBRID
Создание подключения к базе данных
Шаг 1 — Чтобы создать соединение с базой данных, вам необходимо создать экземпляр класса yii \ db \ Connection.
$mydb = new yii\db\Connection([ 'dsn' => 'mysql:host=localhost;dbname=mydb', 'username' => 'username', 'password' => 'password', 'charset' => 'utf8', ]);
Обычной практикой является настройка соединения с БД внутри компонентов приложения. Например, в базовом шаблоне приложения конфигурация соединения с БД находится в файле config / db.php, как показано в следующем коде.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '123574896',
'charset' => 'utf8',
];
?>
Шаг 2 — Для доступа к соединению с БД вы можете использовать это выражение.
Yii::$app->db
Чтобы настроить соединение с БД, вы должны указать его DSN (имя источника данных) через свойство dsn . Формат DSN варьируется для разных баз данных —
- MySQL, MariaDB — mysql: host = localhost; dbname = mydb
- PostgreSQL — pgsql: host = localhost; порт = 5432; dbname = mydb
- SQLite — sqlite: / path / to / db / file
- MS SQL Server (через драйвер sqlsrv) — sqlsrv: сервер = localhost; база данных = mydb
- MS SQL Server (через драйвер mssql) — mssql: host = localhost; dbname = mydb
- MS SQL Server (через драйвер dblib) — dblib: host = localhost; dbname = mydb
- CUBRID — кубрид: dbname = mydb; хост = localhost; порт = 33000
- Oracle — oci: dbname = // localhost: 1521 / mydb
MySQL, MariaDB — mysql: host = localhost; dbname = mydb
PostgreSQL — pgsql: host = localhost; порт = 5432; dbname = mydb
SQLite — sqlite: / path / to / db / file
MS SQL Server (через драйвер sqlsrv) — sqlsrv: сервер = localhost; база данных = mydb
MS SQL Server (через драйвер mssql) — mssql: host = localhost; dbname = mydb
MS SQL Server (через драйвер dblib) — dblib: host = localhost; dbname = mydb
CUBRID — кубрид: dbname = mydb; хост = localhost; порт = 33000
Oracle — oci: dbname = // localhost: 1521 / mydb
Чтобы показать запросы к базе данных в действии, нам нужны данные.
Подготовка БД
Шаг 1 — Создайте новую базу данных. База данных может быть подготовлена следующими двумя способами.
- В терминале запустите mysql -u root –p .
- Создать новую базу данных с помощью CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci;
В терминале запустите mysql -u root –p .
Создать новую базу данных с помощью CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci;
Шаг 2 — Настройте соединение с базой данных в файле config / db.php . Следующая конфигурация предназначена для системы, используемой в настоящее время.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '12345',
'charset' => 'utf8',
];
?>
Шаг 3 — Внутри корневой папки запустите ./yii migrate / create test_table . Эта команда создаст миграцию базы данных для управления нашей БД. Файл миграции должен появиться в папке миграций корня проекта.
Шаг 4. Измените файл миграции (в данном случае m160106_163154_test_table.php ).
<?php
use yii\db\Schema;
use yii\db\Migration;
class m160106_163154_test_table extends Migration {
public function safeUp() {
$this->createTable("user", [
"id" => Schema::TYPE_PK,
"name" => Schema::TYPE_STRING,
"email" => Schema::TYPE_STRING,
]);
$this->batchInsert("user", ["name", "email"], [
["User1", "user1@gmail.com"],
["User2", "user2@gmail.com"],
["User3", "user3@gmail.com"],
["User4", "user4@gmail.com"],
["User5", "user5@gmail.com"],
["User6", "user6@gmail.com"],
["User7", "user7@gmail.com"],
["User8", "user8@gmail.com"],
["User9", "user9@gmail.com"],
["User10", "user10@gmail.com"],
["User11", "user11@gmail.com"],
]);
}
public function safeDown() {
$this->dropTable('user');
}
}
?>
Вышеуказанная миграция создает пользовательскую таблицу со следующими полями: id, name и email. Также добавлено несколько демо-пользователей.
Шаг 5 — Внутри проекта запустите ./yii Миграция, чтобы применить миграцию к базе данных.
Шаг 6 — Теперь нам нужно создать модель для нашей пользовательской таблицы. Для простоты мы собираемся использовать инструмент генерации кода Gii . Откройте этот URL: http: // localhost: 8080 / index.php? R = gii . Затем нажмите кнопку «Пуск» под заголовком «Генератор моделей». Заполните Имя таблицы («пользователь») и Класс модели («MyUser»), нажмите кнопку «Предварительный просмотр» и, наконец, нажмите кнопку «Создать».

Модель MyUser должна появиться в каталоге моделей.