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».

Le modèle MyUser doit apparaître dans le répertoire des modèles.