Yii - Accès à la base de données
Yii DAO (Database Access Object) fournit une API pour accéder aux bases de données. Il sert également de base à d'autres méthodes d'accès aux bases de données: enregistrement actif et générateur de requêtes.
Yii DAO prend en charge les bases de données suivantes -
- MySQL
- MSSQL
- SQLite
- MariaDB
- PostgreSQL
- ORACLE
- CUBRID
Création d'une connexion à la base de données
Step 1 - Pour créer une connexion à la base de données, vous devez créer une instance de la classe yii \ db \ Connection.
$mydb = new yii\db\Connection([
'dsn' => 'mysql:host=localhost;dbname=mydb',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
]);
Une pratique courante consiste à configurer une connexion de base de données à l'intérieur des composants de l'application. Par exemple, dans le modèle d'application de base, la configuration de la connexion à la base de données se trouve dans leconfig/db.php fichier comme indiqué dans le code suivant.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '123574896',
'charset' => 'utf8',
];
?>
Step 2 - Pour accéder à la connexion DB, vous pouvez utiliser cette expression.
Yii::$app->db
Pour configurer une connexion DB, vous devez spécifier son DSN (Data Source Name) via le dsnpropriété. Le format DSN varie selon les bases de données -
MySQL, MariaDB - mysql: hôte = localhost; dbname = mydb
PostgreSQL - pgsql: hôte = localhost; port = 5432; dbname = mydb
SQLite - sqlite: / chemin / vers / db / fichier
MS SQL Server (via sqlsrv driver) - sqlsrv: Serveur = hôte local; Base de données = mydb
MS SQL Server (via mssql driver) - mssql: host = localhost; dbname = mydb
MS SQL Server (via dblib driver) - dblib: hôte = localhost; dbname = mydb
CUBRID - cubrid: dbname = mydb; host = localhost; port = 33000
Oracle - oci: dbname = // localhost: 1521 / mydb
Pour montrer l'interrogation de la base de données en action, nous avons besoin de données.
Préparation de la base de données
Step 1- Créez une nouvelle base de données. La base de données peut être préparée des deux manières suivantes.
Dans le terminal, exécutez mysql -u root –p .
Créez une nouvelle base de données via CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci;
Step 2 - Configurer la connexion à la base de données dans le config/db.phpfichier. La configuration suivante correspond au système actuellement utilisé.
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host = localhost;dbname = helloworld',
'username' => 'vladimir',
'password' => '12345',
'charset' => 'utf8',
];
?>
Step 3 - Dans le dossier racine run ./yii migrate/create test_table. Cette commande créera une migration de base de données pour gérer notre base de données. Le fichier de migration doit apparaître dans lemigrations dossier de la racine du projet.
Step 4 - Modifier le fichier de migration (m160106_163154_test_table.php dans ce cas) de cette façon.
<?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", "[email protected]"],
["User2", "[email protected]"],
["User3", "[email protected]"],
["User4", "[email protected]"],
["User5", "[email protected]"],
["User6", "[email protected]"],
["User7", "[email protected]"],
["User8", "[email protected]"],
["User9", "[email protected]"],
["User10", "[email protected]"],
["User11", "[email protected]"],
]);
}
public function safeDown() {
$this->dropTable('user');
}
}
?>
La migration ci-dessus crée un usertable avec ces champs: id, nom et e-mail. Il ajoute également quelques utilisateurs de démonstration.
Step 5 - À l'intérieur de la racine du projet run ./yii migrate pour appliquer la migration à la base de données.
Step 6 - Maintenant, nous devons créer un modèle pour notre usertable. Par souci de simplicité, nous allons utiliser leGiioutil de génération de code. Ouvrez ceciurl: http://localhost:8080/index.php?r=gii. Ensuite, cliquez sur le bouton «Démarrer» sous l'en-tête «Générateur de modèle». Remplissez le nom de la table («utilisateur») et la classe de modèle («Mon utilisateur»), cliquez sur le bouton «Aperçu» et enfin, cliquez sur le bouton «Générer».
![](https://post.nghiatu.com/assets/tutorial/yii/images/create_model.jpg)
Le modèle MyUser doit apparaître dans le répertoire des modèles.