Yii DB é uma camada DAO (Data Access Object) para aplicações que usam PHP. Ele fornece um conjunto de classes que ajudam você a acessar bancos de dados relacionais. Ele foi projetado para ser flexível e extensível, para que possa ser usado com diferentes bancos de dados e diferentes esquemas de banco de dados. Sua natureza independente de banco de dados facilita a mudança de um banco de dados para outro.
Yii DB fornece uma API orientada a objetos para acessar bancos de dados relacionais. É a base para outros métodos mais avançados de acesso ao banco de dados, incluindo o Query Builder.
Ao usar o Yii DB, você precisa lidar principalmente com SQLs simples e arrays PHP. Como resultado, é a forma mais eficiente de acessar bancos de dados. Entretanto, como a sintaxe SQL pode variar para diferentes bancos de dados, usar o Yii DB também significa que você terá que fazer um esforço extra para criar um aplicativo independente de banco de dados.
Yii DB suporta os seguintes bancos de dados prontos para uso:
DB | Versões |
---|---|
MSSQL | 2017, 2019, 2022 |
MySQL | 5.7 - 8.0 |
MariaDB | 10.4 - 10.9 |
Oracle | 12c - 21c |
PostgreSQL | 9.6 - 15 |
SQLite | 3.3 e superior |
Para instalar o Yii DB, você deve selecionar o driver que deseja usar e instalá-lo com o Composer.
Para MSSQL:
composer require yiisoft/db-mssql
Para MySQL/MariaDB:
composer require yiisoft/db-mysql
Para Oracle:
composer require yiisoft/db-oracle
Para PostgreSQL:
composer require yiisoft/db-pgsql
Para SQLite:
composer require yiisoft/db-sqlite
Primeiro, você precisa configurar o cache do esquema do banco de dados.
Você pode criar uma instância de conexão de banco de dados usando um contêiner DI ou sem ele.
Nota: Quando você cria uma instância de conexão de banco de dados, a conexão real com o banco de dados não é estabelecida até você executar o primeiro SQL ou chamar o método
Yiisoft\Db\Connection\ConnectionInterface::open()
explicitamente.
O Logger e o profiler são opcionais. Você pode usá-los se precisar registrar e criar um perfil de suas consultas.
Depois de ter uma instância de conexão com o banco de dados, você pode executar uma consulta SQL seguindo as seguintes etapas:
- Crie um comando e busque dados
- Parâmetros de vinculação (Bind parameters)
- Executar um comando
- Executar muitos comandos em uma transação
Ao escrever um código independente de banco de dados, citar nomes de tabelas e colunas costuma ser uma dor de cabeça porque diferentes bancos de dados têm nomes diferentes conforme suas regras.
Para superar esse problema, você pode usar a seguinte sintaxe de nomeação introduzida pelo Yii DB:
[[nome da coluna]]
: coloque o nome da coluna entre colchetes duplos.{{%nome da tabela}}
: coloque o nome da tabela entre colchetes duplos e o caractere de porcentagem%
será substituído pelo prefixo da tabela.
O Yii DB converterá automaticamente tais construções nas colunas ou nomes de tabelas entre aspas correspondentes usando a sintaxe específica do DBMS.
Por exemplo, o código a seguir gerará uma instrução SQL válida para todos os bancos de dados suportados:
use Yiisoft\Db\Connection\ConnectionInterface;
/** @var ConnectionInterface $db */
$result = $db->createCommand('SELECT COUNT([[id]]) FROM {{%employee}}')->queryScalar()
Yii DB fornece um Query Builder que ajuda você a criar instruções SQL de uma maneira mais conveniente. É uma ferramenta poderosa para criar instruções SQL complexas de forma simples.
Yii DB fornece uma classe Command
que representa uma instrução SQL a ser executada em um banco de dados.
Você pode usá-lo para executar instruções SQL que não retornam nenhum conjunto de resultados, como INSERT
, UPDATE
, DELETE
,
CREATE TABLE
, DROP TABLE
, CREATE INDEX
, DROP INDEX
, etc.
Yii DB fornece uma maneira de inspecionar os metadados de um banco de dados, como nomes de tabelas, nomes de colunas, etc. através do esquema:
As seguintes extensões estão disponíveis para Yii DB.