Migrações de banco de dados em PHP: ferramentas modernas e práticas
Migrações de banco de dados são uma parte essencial do desenvolvimento moderno em PHP. Elas permitem que equipes de desenvolvedores sincronizem alterações no esquema do banco de dados, acompanhem o histórico de alterações e as apliquem automaticamente em diferentes ambientes (ambiente local, staging, produção). Neste artigo, veremos as principais bibliotecas e ferramentas para migrações em PHP, sua instalação, configuração e exemplos de uso.
O que são migrações e por que são necessárias?
Uma migração de banco de dados é um script que descreve uma alteração no esquema: criação de tabela, adição/remoção de colunas, índices, chaves estrangeiras. As migrações permitem:
- Versionar as alterações na estrutura do BD junto com o código da aplicação.
- Automatizar a implantação em novos servidores.
- Reverter alterações quando necessário.
- Trabalhar em equipe sem conflitos.
Bibliotecas populares para migrações em PHP
1. Phinx (robmorgan/phinx)
Phinx é uma das bibliotecas independentes mais populares para migrações. Ela não está vinculada a um framework específico e suporta MySQL, PostgreSQL, SQLite, SQL Server.
Instalação via Composer:
composer require robmorgan/phinxCriação do arquivo de configuração phinx.yml:
paths: migrations: '%%PHINX_CONFIG_DIR%%/db/migrations' seeds: '%%PHINX_CONFIG_DIR%%/db/seeds'
environments: default_migration_table: phinxlog default_database: development development: adapter: mysql host: localhost name: myapp_db user: root pass: '' port: 3306 charset: utf8Exemplo de migração (criação da tabela users):
<?php
use Phinx\\Migration\\AbstractMigration;
class CreateUsersTable extends AbstractMigration{ public function change() { $table = $this->table('users', ['id' => false, 'primary_key' => ['id']]); $table->addColumn('id', 'biginteger', ['identity' => true]) ->addColumn('username', 'string', ['limit' => 50]) ->addColumn('email', 'string', ['limit' => 100]) ->addColumn('created_at', 'datetime') ->addColumn('updated_at', 'datetime', ['null' => true]) ->addIndex(['email'], ['unique' => true]) ->create(); }}Executando migrações:
vendor/bin/phinx migrate -e development2. Doctrine Migrations (doctrine/migrations)
Doctrine Migrations faz parte do ecossistema Doctrine ORM. É ideal para projetos que já utilizam Doctrine. Suporta todos os SGBDs populares.
Instalação:
composer require doctrine/migrationsConfiguração (migrations.php):
<?phpreturn [ 'table_storage' => [ 'table_name' => 'doctrine_migration_versions', ], 'migrations_paths' => [ 'App\\Migrations' => './migrations', ], 'all_or_nothing' => true, 'transactional' => true, 'check_database_platform' => true,];Exemplo de migração:
<?php
namespace App\\Migrations;
use Doctrine\\DBAL\\Schema\\Schema;use Doctrine\\Migrations\\AbstractMigration;
class Version20240101000000 extends AbstractMigration{ public function up(Schema $schema): void { $table = $schema->createTable('products'); $table->addColumn('id', 'integer', ['autoincrement' => true]); $table->addColumn('name', 'string', ['length' => 255]); $table->addColumn('price', 'decimal', ['precision' => 10, 'scale' => 2]); $table->se Também na biblioteca
Filas de Tarefas para Rust: Visão Geral das Bibliotecas e Ferramentas Populares
Geração Swagger/OpenAPI para C# (.NET): Swashbuckle e NSwag
Effect-ts para TypeScript: guia completo com exemplos
Trabalhando com Apache Kafka em Java: guia completo para desenvolvedores