Migration no Codeigniter

Postado por Rafael Monteiro em 13/03/2009

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/

Trackback URI | RSS dos comentários

Deixe um comentário

Av. Conselheiro Nébias, 368A, Cj. 413
Vila Mathias - Santos - SP
Telefone: (13) 3345-4580

© 2008 - 2009 Stiod. Todos os direitos reservados.