Migraciones

Las Migraciones en Laravel son como un pequeño control de versiones para la estructura de nuestras bases de datos. Las cuales nos permiten tener guardadas las estructuras de nuestra base de datos en scripts PHP, que nos permite cambiar la estructura y contenido de la base de datos, que en caso que perdiéramos nuestra base de datos, solo tenemos que ejecutar estos scripts y tendríamos nuestra base de datos completa, ya las migraciones tienen una fecha y una hora por lo que siempre se ejecutan en el orden correcto.

Creando Migraciones
Para crear migraciones necesitamos usar la interfaz de linea de comando Artisan, por lo que debemos que abrir una terminal y luego desplazarnos hacia la estructura de nuestro proyecto Laravel. Las migraciones son el lugar perfecto para guardar el esquema de nuestras bases de datos. Vamos a crear nuestra primera migración llamada crear_tabla_usuarios.

php artisan migrate:make crear_tabla_usuarios
Created Migration: 2014_07_29_124639_crear_tabla_usuarios
Generating optimized class loader
Compiling common classes

como pueden ver llamamos al método de Artisan, migrate:make y le especificamos el nombre que queríamos para nuestra migración. Al momento de ejecutar este método Laravel creo una plantilla ubicado en el directorio app/database/migrations. La plantilla tendrá el nombre proporcionado al método migrate:make, con una fecha y una hora agregadas.

        app/database/migrations/2014_07_29_124639_crear_tabla_usuario.php

Hora procedemos abrir este archivo con editor de texto.

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CrearTablaUsuarios extends Migration {

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}

}

Aquí podemos ver la estructura de nuestra clase de migración, es importante siempre usar la interfaz Artisan para crear las migraciones ya tendremos un historial de las fechas y las horas en la que fueron ejecutadas las migraciones. Podemos ver que la clase tiene dos métodos públicos up() y down(), algo importante que debes saber es que el método up() crear la migración y el down la deshace. Así que podemos ejecutar una migración para cambiar la estructura de nuestra base de datos, y también deshacer dicha migración para volver todo a su estado original.

Vamos a llenar el metodo up:

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
Schema::create('usuarios',function(Blueprint $table){
                        $table->increments('id');
                        $table->string('nombre',50);
                        $table->string('email');
                        $table->string('password');
                        $table->timestamps();
                });
}

Luego de realizar el metodo up(), ahora vamos con el metodo down():

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
Schema::drop('usuarios');
}

Como podemos ver el método down le da un drop a la tabla usuarios que crear el método up. Ahora vemos dos parámetros que nos ahorran mucho tiempo a la hora de crear migraciones, --create y --table. por lo que si ejecutamos lo siguiente

php artisan migrate:make crear_tabla_usuarios --create=usuarios

tendríamos esto:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CrearTablaUsuarios extends Migration {

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
Schema::create('usuarios',function(Blueprint $table){
                        $table->increments('id');
                        $table->timestamps();
                })
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
Schema::drop('usuarios');
}

}

Bueno como podran ver al usar el parametro --create Laravel nos crear los dos metodos Schema::create() y Schema::drop() y tambien agrego los metodos increments() y timestamps().

También para crear migraciones en un directorio diferente de app/database/migrations solo tenemos que usar el parametro --path.

php artisan migrate:make crear_tabla_usuarios --path=app/migs
Created Migration: 2014_07_29_134537_crear_tabla_usuarios
Generating optimized class loader
Compiling common classes

Esto crear esta migración en la ubicación app/migs pero al momento de ejecutar esta migración le debes indicar la Laravel la ubicación de la misma.

Ejecutar Migraciones

Para ejecutar migraciones solamente tenemos que usar el comando migrate de Artisan, en la linea de comando. ejemplo:

php artisan migrate

Al ejecutar este comando se nos creara la tabla usuarios en nuestra base de datos, con los siguientes campos:
  • id
  • nombre
  • email
  • password
  • created_at
  • updated_at
Pero en ningun momento especificamos los campos created_at y updated_at, ha estos campos fueron creados al indicar el método timestamps().

Añadir Columna.

Como agregar columna a una tabla, recuerdan los dos parámetros --create y --table en este caso vamos a usar --table que nos permite crear una migración para alterar la estructura tabla.

php artisan migrate:make agregar_edad_a_usuarios --table=usuarios
Created Migration: 2014_07_29_140933_agregar_edad_a_usuarios
Generating optimized class loader
Compiling common classes

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AgregarEdadAUsuarios extends Migration {

/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('usuarios', function(Blueprint $table)
{
                        //
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('usuarios', function(Blueprint $table)
{
//
});
}

}

Esta es la estructura de la clase migración que se crear al usar el parámetro --table.

Deshaciendo Migraciones

Para deshacer migraciones utilizamos el comando rollback, que deshace la ultima migración ejecutada con el comando migrate.

php artisan migrate:rollback
Rolled back: 2014_07_29_140933_agregar_edad_a_usuarios

Si desamos deshacer todas las migraciones ejecutadas con el comando migrate solo tenemos que usar el comando reset.

php artisan migrate:reset
Rolled back: 2014_07_29_140933_agregar_edad_a_usuarios
Rolled back: 2014_07_29_124639_crear_tabla_usuarios
Nothing to rollback.

Tambien podemos ejecutar migraciones en una conexión en especifico por ejemplo en mi conexión mysql, pgsql o sqlsrv usando el siguiente comando.

php artisan migrate --database=mysql
Migrated: 2014_07_29_124639_crear_tabla_usuarios
Migrated: 2014_07_29_140933_agregar_edad_a_usuarios

Esto es todo espero que hayan aprendido el temas de las migraciones.

No hay comentarios.:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.