shrrgnien / sequencial-migrations
Pacote para rodar migrations customizadas de forma sequencial no Laravel.
Requires
- php: >=8.0
- illuminate/support: ^11.0
README
Pacote Laravel para rodar migrations customizadas de forma sequencial (em ordem definida).
Vantagens
-
Exibe cenários de erro de forma mais amigável: ao invés de quebrar toda a sequência de migrations, permite identificar e tratar apenas a migration problemática, sem interromper o restante.
-
Permite reajustar rapidamente a sequência: se uma migration falhar, é fácil corrigir e continuar de onde parou, sem precisar reverter tudo.
-
Evita erros comuns de deploy: ao garantir a ordem e pular migrations já aplicadas, reduz riscos de inconsistências em ambientes diferentes.
-
Facilita o trabalho com bancos de dados legados: muitos bancos legados foram criados sem migrations. Com este pacote, é possível rodar migrations específicas para alterar ou preparar o banco legado antes de migrá-lo, sem precisar executar todas as migrations novamente.
-
Útil em cenários com múltiplos bancos: permite rodar apenas migrations pontuais em bancos legados, sem afetar o banco novo ou o restante do sistema.
-
Ideal para transição de bancos legados para novos: possibilita migrar tabelas antigas para o padrão Laravel de forma controlada e incremental, aplicando partes do schema novo sem afetar o legado, tornando a migração mais segura e previsível.
-
Permite definir uma lista de migrations customizadas (nomeadas ou anônimas) para serem executadas em ordem específica.
-
Suporta tanto migrations padrão do Laravel quanto arquivos de migration anônimos.
-
Executa o método
up()
de cada migration, pulando automaticamente migrations já aplicadas (baseado na existência da tabela). -
Executa o método
down()
de cada migration, revertendo na ordem inversa e pulando migrations já revertidas. -
Registra e remove as migrations na tabela padrão
migrations
do Laravel, mantendo o histórico/batch. -
Detecta automaticamente o nome da tabela criada/removida pela migration (por propriedade, método ou parsing do método
up
). -
Comando Artisan
migrate:base
para rodar todas as migrations customizadas em ordem, com suporte aup
edown
. -
Não requer registro manual do Service Provider graças ao Laravel Package Discovery.
Instalação
composer require shrrgnien/sequencial-migrations
Publicando o arquivo BaseMigration
Após instalar, publique o arquivo base para definir suas migrations:
php artisan vendor:publish --tag=sequencial-migrations-base
Isso irá criar o arquivo database/migrations/BaseMigration.php
no seu projeto. Edite esse arquivo para definir a ordem das suas migrations.
Uso
Importando migrations automaticamente para o BaseMigration
Você pode popular o array $migrations
do arquivo database/migrations/BaseMigration.php
automaticamente com as migrations do seu projeto usando o comando Artisan:
php artisan migrate:import-base all
Opções disponíveis:
all
: importa todas as migrations (nomeadas e anônimas) encontradas na pastadatabase/migrations
(exceto o próprio BaseMigration.php), sem duplicidade.pending
: importa apenas as migrations que ainda não foram executadas (pendentes).executed
: importa apenas as migrations já executadas (presentes na tabelamigrations
).
Exemplos:
Importar todas as migrations:
php artisan migrate:import-base all
Importar apenas as pendentes:
php artisan migrate:import-base pending
Importar apenas as já executadas:
php artisan migrate:import-base executed
O comando irá atualizar automaticamente o array $migrations
do arquivo BaseMigration.php.
-
Edite manualmente ou utilize o comando acima para popular a propriedade
$migrations
emdatabase/migrations/BaseMigration.php
.- Você pode misturar migrations nomeadas (classes) e migrations anônimas (arquivos que retornam um objeto Migration).
- Exemplo:
protected array $migrations = [ // Migration nomeada (classe PHP) 'CreateProdutosTable', // Migration anônima (arquivo migration) '2025_08_11_135652_create_sis_solicitacoes_table', ];
- Para migrations nomeadas, use apenas o nome da classe (sem namespace).
- Para migrations anônimas, use o nome do arquivo (sem extensão .php).
-
Coloque suas migrations customizadas na pasta padrão do Laravel
- Os arquivos devem estar em
database/migrations
do seu projeto Laravel.
- Os arquivos devem estar em
-
Execute as migrations em ordem
- Use o comando Artisan:
php artisan migrate:base
- Para reverter (down), use:
php artisan migrate:base down
- Use o comando Artisan:
Exemplo de migration nomeada
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateProdutosTable extends Migration { public function up() { Schema::create('produtos', function (Blueprint $table) { $table->id(); $table->string('nome'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('produtos'); } }
Depois, adicione 'CreateProdutosTable' no array $migrations
da sua BaseMigration
.
Licença
MIT