Yii - Acesso ao Banco de Dados

Yii DAO (Database Access Object) fornece uma API para acessar bancos de dados. Ele também serve como base para outros métodos de acesso ao banco de dados: registro ativo e criador de consultas.

Yii DAO suporta os seguintes bancos de dados -

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

Criando uma conexão de banco de dados

Step 1 - Para criar uma conexão de banco de dados, você precisa criar uma instância da classe yii \ db \ Connection.

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

Uma prática comum é configurar uma conexão DB dentro dos componentes do aplicativo. Por exemplo, no modelo de aplicativo básico, a configuração da conexão DB está localizada noconfig/db.php arquivo conforme mostrado no código a seguir.

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

Step 2 - Para acessar a conexão DB você pode usar esta expressão.

Yii::$app->db

Para configurar uma conexão de banco de dados, você deve especificar seu DSN (Nome da fonte de dados) por meio do dsnpropriedade. O formato DSN varia para bancos de dados diferentes -

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

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

  • SQLite - sqlite: / caminho / para / db / arquivo

  • MS SQL Server (via sqlsrv driver) - sqlsrv: Server = localhost; Database = mydb

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

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

  • CUBRID - cubrid: dbname = mydb; host = localhost; port = 33000

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

Para mostrar a consulta de banco de dados em ação, precisamos de dados.

Preparando o banco de dados

Step 1- Crie um novo banco de dados. O banco de dados pode ser preparado das duas maneiras a seguir.

  • No terminal, execute mysql -u root –p .

  • Crie um novo banco de dados via CREATE DATABASE helloworld CHARACTER SET utf8 COLLATE utf8_general_ci;

Step 2 - Configure a conexão do banco de dados no config/db.phpArquivo. A configuração a seguir é para o sistema usado atualmente.

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

Step 3 - Dentro da pasta raiz run ./yii migrate/create test_table. Este comando criará uma migração de banco de dados para gerenciar nosso banco de dados. O arquivo de migração deve aparecer nomigrations pasta da raiz do projeto.

Step 4 - Modifique o arquivo de migração (m160106_163154_test_table.php neste caso) desta forma.

<?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');
      }
   }
?>

A migração acima cria um usertabela com estes campos: id, nome e email. Ele também adiciona alguns usuários de demonstração.

Step 5 - Dentro da raiz do projeto run ./yii migrate para aplicar a migração ao banco de dados.

Step 6 - Agora, precisamos criar um modelo para o nosso usermesa. Para simplificar, vamos usar oGiiferramenta de geração de código. Abra issourl: http://localhost:8080/index.php?r=gii. Em seguida, clique no botão “Iniciar” sob o cabeçalho “Gerador de modelo”. Preencha o Nome da Tabela (“usuário”) e a Classe do Modelo (“MeuUsuário”), clique no botão “Visualizar” e por fim, clique no botão “Gerar”.

O modelo MyUser deve aparecer no diretório de modelos.