Olá, pessoal! Hoje vou falar sobre o sistema de Migrations do CodeIgniter, uma excelente forma de manter seu banco de dados sempre atualizado entre as suas máquinas de desenvolvimento ou sua equipe.
Imagine o seguinte cenário: Você tem uma aplicação sendo desenvolvida. Você não está desenvolvendo sozinho, mas sim com uma equipe de umas 2 ou mais pessoas. Aí você percebe a necessidade de adicionar um campo em uma tabela no banco. Você vai lá e adiciona o campo. Depois o software começa a presentar problemas para os outros desenvolvedores pois o banco de dados de desenvolvimento deles não tem o novo campo, ou a nova tabela…
É aí que entram as Migrations do CodeIgniter. A ideia é simples:
Partindo de um banco inicial, documenta-se as suas alterações na forma de código PHP. E à estas mudanças nós temos que dar números de versão. Depois basta acompanhar as Migrations e seu banco não mais ficará desatualizado! Perfeito!
Vamos a um exemplo.
Modelo Inicial
Para o modelo inicial, temos a seguinte tabela:
1 2 3 4 5 6 | CREATE TABLE `visitantes` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `nome` VARCHAR(40) NOT NULL, `email` VARCHAR(100) NOT NULL, PRIMARY KEY (`id`) ) |
Legal. E assim o sistema foi desenvolvido. Aí um belo dia alguém percebe a necessidade de também se cadastrar a data e hora da vista do cliente.
Você poderia simplesmente adicionar o campo na tabela, mas aí cairia nos problemas que expliquei acima. Então vamos fazer uma Migration!
Arquivos de Migrations
Os arquivos das Migrations devem ficar em application/migrations/. Este diretório não existe por padrão, então você pode criá-lo.
Criado o diretório, é só adicionar a primeiro Migration. Os nomes dos arquivos das Migrations segue um padrão de numeração e nome. Neste caso eu nomeei o arquivo assim:
001_datahora_visitantes.php
O 001 significa que esta é a primeira Migration. Já o nome eu coloquei para ficar bem claro o que ele faz (Adiciona o campo datahora na tabela visitantes).
Dentro do arquivo deve existir uma classe com o nome Migration_ substituindo o 001 do nome do arquivo. Veja o exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php // Perceba os maiúsculos em Migration e na primeira letra do restante class Migration_Datahora_visitantes extends CI_Migration { public function up() { // Verificando se o campo já existe if (! $this->db->field_exists('datahora', 'visitantes')) { // Criando o campo. $this->load->dbforge(); // DB Forge, para manipular o banco $campos = array( 'datahora' => array( 'type' => 'datetime', 'default' => '2012-01-01 00:00:00' ) ); $this->dbforge->add_column('visitantes', $campos); } } } |
Certo, hora de executar.
Executando
Para executar você precisa ativar as Migrations na configuração do CodeIgniter. Para isso altere o arquivoapplication/config/migration.php:
1 2 3 | <?php $config['migration_enabled'] = TRUE; // Ativar aqui $config['migration_version'] = 1; // Colocar o número da versão aqui |
E também é necessário criar um Controller para ativar tudo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php class Migrate extends CI_Controller { /** * Método construtor */ public function __construct() { parent::__construct(); } public function index() { $this->load->library('migration'); if ($this->migration->current()) { echo "Migração bem sucedida!"; } else { echo $this->migration->error_string(); } } } |
Beleza, agora é só acessar o seu controller e voilã! Ele deve exibir o “Migração bem sucedida!”. Se não exibir, leia os erros e tente corrigir qualquer problema.
Veja como ficou a minha tabela depois do Migration:
SELECT * FROM visitantes; ======= +----+---------------+-----------------+---------------------+ | id | nome | email | datahora | +----+---------------+-----------------+---------------------+ | 1 | Evaldo Junior | email@email.com | 2012-01-01 00:00:00 | +----+---------------+-----------------+---------------------+
Legal né? Agora vai lá e faça seus teste bote em pratica =D
Ah, e se você quiser aprender mais sobre CodeIgniter e como tirar o melhor dele, eu tenho um curso online, o Turbine-se com CodeIgniter. As inscrições estão abertas, então corre lá para garantir a sua vaga!
InFog
Outros textos que você pode gostar:
- Lançado o CodeIgniter 2.1.3 Lançada a versão 2.1.3 do CodeIgniter. Continue lendo →...
- Nova Turma do Turbine-se com CodeIgniter! Olá! Estão abertas as inscrições para a próxima turma do...
- CodeIgniter 2.0.0 Olá, pessoal! No dia 28 de janeiro de 2011 foi...
Related posts brought to you by Yet Another Related Posts Plugin.







>




Opa, parabéns pelo artigo.
Queria saber o seguinte, como eu adiciono um um campo padrão, ao executar o migration ele já inserir um valor por exemplo:
1 | Evaldo Junior | email@email.com | 2012-01-01 00:00:00