Las Migraciones son una herramienta que nos proporciona Laravel para crear estructuras de tablas en nuestra base de datos de forma sencilla, definiendo tablas con sus columnas y tipos de datos.

Las migraciones se crean en el directorio Database\Migrations, donde ya tenemos un par de ellas creadas, vemos que la primera que nos encontramos es ‘create_users_table’ lo que como su nombre indica será para crear la tabla usuarios, si abrimos el archivo nos encontramos con el siguiente código:

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
   /**
    * Run the migrations.
    *
    * @return void
    */
   public function up()
   {
       Schema::create('users', function (Blueprint $table) {
           $table->increments('id');
           $table->string('name');
           $table->string('email')->unique();
           $table->string('password', 60);
           $table->rememberToken();
           $table->timestamps();
       });
   }
   /**
    * Reverse the migrations.
    *
    * @return void
    */
   public function down()
   {
       Schema::drop('users');
   }
}

 

Vemos dos métodos, Up & Down, los cuales significan, cuando ejecutamos la migración (Up) crea la tabla con sus tipos de columnas, y Down es un ‘rollback’ por si queremos retroceder si nos hemos equivocado en algo. En la mayoría de casos se usa como éste ejemplo, creas la tabla (Schema::create()), y si quiero retroceder la borras(Schema::drop()).

Vamos a ver la función CREATE, vemos que le pasamos dos parámetros, el primero es el nombre que va a tener la tabla, y el segundo siempre lo vamos a dejar así, que es la clase para crear la tabla propia de laravel.

Tenemos la tabla ‘users’ creada, ahora con $table->tipo(‘nombre’) definimos las columnas y de que tipo será cada una, vemos que éste código creará la siguiente estructura en nuestro MySQL:

  • Id (Autoincremental)
  • Name (Varchar 255)
  • Email (Varchar 255) UNIQUE
  • Password (Varchar 60)
  • Remember Token (Eso es el token que utiliza laravel para el LOGIN, no hacer caso por ahora)
  • created_at (TIMESTAMP)
  • updated_at (TIMESTAMP)

 

Los campos created_at / updated_at son campos que rellena laravel automáticamente cada vez que modificamos o creamos un registro en nuestra base de datos.

Las migraciones se ejecutan con comandos de artisan:

php artisan migrate

 

Creamos las migraciones:

php artisan migrate:rollback

 

Rollback de las migraciones, en este caso borramos:

Para crear migraciones es parecido al proceso para crear un Modelo, se recomienda usar nombres descriptivos para la migración como hemos visto el ejemplo de create_users_table, en nuestro caso será.

  • create_posts_table
  • create_comments_table

Y para crear las migraciones ejecutamos el comando artisan:

php artisan make:migration create_users_table