Migration no Codeigniter
Olá !
Nesse post abordarei uma implementação básica de migration utilizando como base o framework Codeigniter.
Cenário
Para aqueles que desconhecem, o recurso de Migration consiste na abstração das alterações em bases de dados para uma classe que automatiza essa tarefa. Isso é particularmente útil quando trabalhamos em equipe e cada profissional desenvolve em seu ambiente, eventualmente modelando novas tabelas ou adicionando campos as já existentes. Dessa forma, evita-se trabalhar diretamente com o SQL (o que possibilita uma independência do SGBD) e o processo de atualização dos diversos ambientes (inclusive o de produção, quando for o caso) se torna mais simples e ágil.
Instalação
Por padrão, essa funcionalidade não vem integrada ao CI, entretanto, pode ser facilmente acoplada mediante o download do arquivo http://codeigniter.com/wiki/File:migrations.1.0.zip/ seguido da descompactação do mesmo na pasta "application" do seu projeto.
Essa classe acompanha um helper que facilita a criação dos migrates: http://codeigniter.com/wiki/Database_Utilities_helper/, no qual é possível adicionar funções específicas, de acordo com a necessidade.
Utilização
A implementação de Migration para o Codeigniter foi inspirada na do Ruby on Rails, portanto segue a sua mesma estrutura.
Juntamente com a instalação do Migration existe uma pasta chamada "example_migrations" que contém alguns exemplos para a utilização e formatação.
O arquivo migrate deve possuir o seguinte padrão de nomenclatura:
###_migration_unique_name.php
(onde ### é o número da versão)
Observações:
- O nome da classe deve acompanhar o nome único (após o número da versão) e seguir o camel case (primeira letra em maiúscula e as demais minúsculas).
- Tanto o prefixo quanto o nome devem ser únicos para não acarretar em conflitos entre os migrates.
- O nome do arquivo deve ser intuitivo e descritivo, acompanhando o que ele se propõe a fazer.
- A classe deve, obrigatoriamente, implementar os métodos "up()" e "down()" responsáveis por "instalar" e "desinstalar" o migrate, respectivamente. O método down() deve ser implementado de modo a desfazer o que foi realizado pelo up().
São duas as opções para a utilização: version e install.
Na primeira você especifica a versão do migrate a se utilizar, caso o sistema esteja em uma versão inferior a ela, ele será atualizado, caso contrário, retornará à versão especificada (desfazendo os migrates das versões posteriores à informada).
Dessa forma, para aplicar a versão 4, seria utilizada uma URL como essa:
http://dominio/index.php/migrate/version/4
A segunda opção verificará todos os migrates disponíveis, aplicando-os ao schema. Ela é útil quando movemos a aplicação para um novo servidor, ou quando um novo membro junta-se à equipe.
Exemplo
<?php class Rename_articles { function up() { echo "Renaming table..."; rename_table("articles", "blogs"); echo "DONE"; } function down() { echo "Renaming table..."; rename_table("blogs", "articles"); echo "DONE"; } } ?>
O exemplo acima renomeia a tabela "articles" para "blogs".
Maiores informações: http://codeigniter.com/wiki/Migrations/
Deixe um comentário |

