Migrations: o porque e como usar.

Carlos Eduardo
3 min readFeb 10, 2016

--

Mesmo sendo algo relativamente simples ainda vejo uma certa falta de uso na comunidade, uma parte não utiliza ou se utiliza não sabe como devidamente utilizar.

Vou abordar o básico sobre o conceito e tentar mistificar a forma de utilizar.

Migrations

É uma forma de versionar o schema de sua aplicação. Migrations trabalha na manipulação da base de dados: criando, alterando ou removendo. Uma forma de controlar as alterações do seu banco juntamente com o versionamento de sua aplicação e compartilhar-la.

Imagine o cenário que sua aplicação necessita sofrer uma alteração, qual essa alteração será necessário adicionar uma nova tabela na base de dados. Perfeito, você cria tabela e codifica aplicação, até ai tudo bem rodando em ambiente de desenvolvimento. Porém neste cenário sua aplicação esta em produção, você commita alteração para homologação, depois da merge para produção, certo? Porém sua base de dados sofreu alteração, como você irá criar a tabela? Conectando na base de dados e rodando query schema? Não.

Ao dar deploy em produção você certamente deverá rodar os testes unitários, seguindo este padrão você também rodará as migrations, qual irá identificar que tem uma nova e criar a base de dados referente aquele deploy.

No laravel nativamente vem imbutido o ORM eloquent que é responsável pela abstração da base de dados e também controle de schema. Porém não se sinta obrigado a utilizar o laravel para ter este package, ele é modular e você pode instalar ele pelo composer:

composer require “illuminate/database”

Para cada alteração que houver no schema da sua aplicação você deverá criar uma migration para esta alteração.

Atenção. Qualquer alteração deverá ser registrada, seja ela criação de uma coluna, alteração de tipo, criação de FK ou PK, remoção e etc. Qualquer simples alteração deverá estar nas migrations

Vou mostrar exemplo de um código, para ver facilidade que seria. Neste exemplo vou utilizar o laravel, porém muda só as dependencias caso utilize o package illuminate/database.

Vamos supor que eu tenha tabela users e preciso criar um novo campo

avatar VARCHAR(50)

Pelo comando artisan você poderá criar migration.

php artisan make:migration add_avatar_column_to_users_table

Migration há sempre dois métodos.

Up()

Este método é responsável por efetuar alteração no seu schema de nível de atualização. Neste exemplo eu coloquei a função para criar o campo avatar no método up, pois estou atualizando algo na minha aplicação, ou seja, desenvolvi alguma funcionalidade que agora irá utilizar avatar do usuário.

Down()

Este método é responsável pelo rollback de sua aplicação. Caso seja rodado o comando migrate:rollback a migration irá executar este método, que neste exemplo irá remover o campo avatar da tabela users.

Desta forma você mantém toda alteração de sua base de dados versionada, sendo possível atualizar ou dar rollback na versão da aplicação sem esforço de ficar atualizando schema.

Hoje todas aplicações após modelar o banco repasso para as migrations todo o schema, facilita e muito o deploy e versionamento.

Bom, é isso. Recomendo o uso e aprofundamento. Todas informações referente aos métodos disponíveis estão na documentação oficial do laravel Database: Migrations

Cya.

--

--

Carlos Eduardo
Carlos Eduardo

Written by Carlos Eduardo

Passionate about programming, tv series, movies, electronic music, entrepreneurship and a good guitar. Believes that all knowledge obtained can be divided.

Responses (3)