Yii - Acceso a la base de datos

Yii DAO (Objeto de acceso a la base de datos) proporciona una API para acceder a las bases de datos. También sirve como base para otros métodos de acceso a la base de datos: registro activo y generador de consultas.

Yii DAO admite las siguientes bases de datos:

  • MySQL
  • MSSQL
  • SQLite
  • MariaDB
  • PostgreSQL
  • ORACLE
  • CUBRID

Crear una conexión de base de datos

Step 1 - Para crear una conexión a la base de datos, necesita crear una instancia de la clase yii \ db \ Connection.

$mydb = new yii\db\Connection([
   'dsn' => 'mysql:host=localhost;dbname=mydb',
   'username' => 'username',
   'password' => 'password',
   'charset' => 'utf8',
]);

Una práctica común es configurar una conexión de base de datos dentro de los componentes de la aplicación. Por ejemplo, en la plantilla de aplicación básica, la configuración de la conexión DB se encuentra en elconfig/db.php archivo como se muestra en el siguiente código.

<?php
   return [
      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:host = localhost;dbname = helloworld',
      'username' => 'vladimir',
      'password' => '123574896',
      'charset' => 'utf8',
   ];
?>

Step 2 - Para acceder a la conexión DB puede utilizar esta expresión.

Yii::$app->db

Para configurar una conexión de base de datos, debe especificar su DSN (Nombre de fuente de datos) a través del dsnpropiedad. El formato de DSN varía para diferentes bases de datos:

  • MySQL, MariaDB - mysql: host = localhost; nombrebd = mydb

  • PostgreSQL - pgsql: host = localhost; puerto = 5432; dbname = mydb

  • SQLite - sqlite: / ruta / a / db / archivo

  • MS SQL Server (via sqlsrv driver) - sqlsrv: servidor = localhost; Base de datos = mydb

  • MS SQL Server (via mssql driver) - mssql: host = localhost; dbname = mydb

  • MS SQL Server (via dblib driver) - dblib: host = localhost; nombrebd = mydb

  • CUBRID - cubrid: nombrebd = mydb; host = localhost; puerto = 33000

  • Oracle - oci: dbname = // localhost: 1521 / mydb

Para mostrar la consulta de la base de datos en acción, necesitamos datos.

Preparando la base de datos

Step 1- Crea una nueva base de datos. La base de datos se puede preparar de las dos formas siguientes.

  • En la terminal, ejecute mysql -u root –p .

  • Cree una nueva base de datos mediante CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci;

Step 2 - Configure la conexión de la base de datos en el config/db.phparchivo. La siguiente configuración es para el sistema que se utiliza actualmente.

<?php
   return [
      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:host = localhost;dbname = helloworld',
      'username' => 'vladimir',
      'password' => '12345',
      'charset' => 'utf8',
   ];
?>

Step 3 - Dentro de la carpeta raíz run ./yii migrate/create test_table. Este comando creará una migración de base de datos para administrar nuestra base de datos. El archivo de migración debe aparecer en elmigrations carpeta de la raíz del proyecto.

Step 4 - Modificar el archivo de migración (m160106_163154_test_table.php en este caso) de esta manera.

<?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 migración anterior crea una usertabla con estos campos: id, nombre y correo electrónico. También agrega algunos usuarios de demostración.

Step 5 - Dentro de la raíz del proyecto run ./yii migrate para aplicar la migración a la base de datos.

Step 6 - Ahora, necesitamos crear un modelo para nuestro usermesa. En aras de la simplicidad, vamos a utilizar elGiiherramienta de generación de código. Abre estourl: http://localhost:8080/index.php?r=gii. Luego, haga clic en el botón "Inicio" debajo del encabezado "Generador de modelos". Complete el Nombre de la tabla ("usuario") y la Clase de modelo ("Mi usuario"), haga clic en el botón "Vista previa" y, finalmente, haga clic en el botón "Generar".

El modelo MyUser debería aparecer en el directorio de modelos.