DEV Community

Cover image for Crie seu próprio sistema de migrations em PHP! Parte 1
Tadeu Barbosa
Tadeu Barbosa

Posted on

4 2

Crie seu próprio sistema de migrations em PHP! Parte 1

Ao som de Elvis Presley — Baby, what you want me to do. gostaria de compartilhar com vocês uma experiência recente que tive.

Para os que programam em PHP, muito dificilmente não conhecem o Framework Laravel. É um dos mais conhecidos, senão usados atualmente. E a algum tempo atrás quando me aventurei a aprender o Laravel já na sua versão 4, me deparei com uma ferramenta incrível: As migrations ❤!

O que são e como funcionam as migrations

Digamos que o sistema de migrations é um sistema criado para auxiliar os desenvolvedores a migrarem seus bancos de dados, contribuir com o desenvolvimento e a parte de infra de um projeto. Deixe que eu demonstre melhor. Digamos que comecei a desenvolver meu site e que possuo uma tabela chamada usuarios e que esta tabela possui os campos: id, primeiro_nome, email e senha. Uma estrutura mais simples impossível!

Ok! A nossa tabela está rodando em produção, em 10 sites diferentes, e cada um possui em média 1.000 clientes cadastrados. Porém, ai vem o problema, o chefe nos chama no escritório e diz que precisa agora capturar também o telefone dos clientes. E, além do mais, que ao invés de ser capturado somente o primeiro nome seja capturado o nome completo. Bem, você poderia simplesmente ir a cada um dos bancos e alterar manualmente cada uma das tabelas.

Magic!

A magia das migrations

Se fosse só isso, ter todo esse trabalho para alterar as tabelas, não seria necessário escrever esta publicação. Bastaria que fizéssemos as alterações e tudo ótimo. Mas esse não é o nosso objetivo. O nosso objetivo é conseguir entregar um trabalho bem feito, utilizando os recursos que estão ao nosso alcance.

Suponhamos que ao invés de alterar banco por banco, tabela por tabela, você decida aprender a utilizar as migrations e poupar tempo e trabalho desnecessário. Mais a cima eu citei o Laravel, mas não é exclusividade do mesmo. As migrations estão presente em diversas aplicações. Um exemplo seria o Adonis JS, uma aplicação em NodeJs gostosinha de mexer.

Bem, chega de enrolação. Você cria uma migration, no caso do Laravel:



php artisan make:migration add_columns_to_usuarios


Enter fullscreen mode Exit fullscreen mode

E dentro do arquivo cria todo o conteúdo responsável por alterar e criar as colunas. No fim, basta rodar no servidor de produção:



php artisan migrate


Enter fullscreen mode Exit fullscreen mode

E o Laravel fará todo o trabalho por você! ;D Molezinha, não?!

Uma semana depois volta seu chefe e diz que recalcularam e realmente só precisam capturar o primeiro nome e não precisam mais do telefone. Maravilha! Com as migrations você só precisa rodar o seguinte comando para desfazer as últimas alterações na estrutura do banco:



php artisan migrate:rollback --step=1


Enter fullscreen mode Exit fullscreen mode

Tudo muito bem, tudo muito bom, mas e se eu não tiver utilizando o Laravel, ou o Adonis…? Bem, você vai precisar baixar uma biblioteca ou criar um próprio sistema caso não ache uma para a sua linguagem (o que acho difícil).

Para o PHP, por exemplo, me deparei com o phinx do CakePHP, ou essa PHPDbMigration. Todas as duas disponíveis no Github ;)

Esse post vai ficar muito longo para explicar como criar o seu próprio sistema em PHP, mas vou continuar no próximo.
Acompanhe!

Imagem: fotografielink pixabay

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more