Blog de programación, errores, soluciones

laravel / migrations – Utiliazando migraciones en Laravel

Las migraciones en laravel son como tener un control de versiones de tu base de datos, con ellas podemos crear de forma rápida el esquema de nuestra base de datos.

Con las migraciones tenemos un código el cual creara y modificara nuestras tablas en la base de datos.

Como creamos una migración en laravel

También al igual que muchos otros elementos en laravel, como pueden ser los modelos, los controles, otros podemos crear los migrations atravez de la consola.

La sintaxis para crear una migración atravez de la consola es la siguiente:

php artisan make:migration <create_users_table> [--create=table_name|--table=table_name]

si crea una migración sin los opcionales creara una migración vacía

Ejemplo: php artisan make:migration vacía

<?php

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

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

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

Como puede ver en este ejemplo una migración consta de 2 funciones en su interior una es up y la otra down.

Con la función up es cuando corremos la migración esta función hará lo que la migración deba hacer.

La función down es la que se ejecutara cuando corramos el comando rollback.

Spongamos que nos falto hacer algo en la migración pero ya corrimos muchas migraciones, obviamente en este caso nos falto el nombre de la propiedad precio cantidad de baños por ejemplo excretara.

Creando una migración para crear una tabla.

Veamos una migración con la opción –create table_name

Supongamos que tenemos que crear una tabla de propiedades así que utilizaremos el siguiente comando:

php artisan make:migration crear_tabla_propiedades  --create=propiedades
<?php

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

class CrearTablaPropiedades extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('propiedades', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

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

Como puede ver la migracion en si no es lo que crea en si la tabla sino esta porción de código.

Schema::create(‘propiedades’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->timestamps();
});

Eso quiere decir que podemos crear varias tablas en una migración. Pro otra parte en el código de la función down vera:

Schema::dropIfExists(‘propiedades’);

Con Schema::dropifExists estará eliminando la tabla si es que esta existe al correr el rollback.

Antesde correr php artisan migrate levante su base de datos no sea como yo 😂

Creando una migración para modificar una tabla en base de datos.

Veamos una migración con la opción –table table_name

En caso que tenga que modificar una tabla a la cual ya se ha migrado

php artisan make:migration modificar_tabla_propiedades --table=propiedades
<?php

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

class ModificarTablaPropiedades extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('propiedades', function (Blueprint $table) {
            $table->string('tipo');// se que lo deberia hacer de otra forma es solo para el ejemplo
            $table->string('direccion');
            $table->smallInteger('baños');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('propiedades', function (Blueprint $table) {
            $table->dropColumn('tipo');
            $table->dropColumn('direccion');
            $table->dropColumn('baños');
        });
    }
}

Seria bueno que viera los tipos de columnas y los tipos de modificadores dejo referencia abajo.

Ahora probaremos el rollback con php artisan migrate:rollback esto hara que se le haga un rollback a todo quedando sin tablas en la base de datos.

Otra cosa muy comun es usar php artisan migrate:refresh de esta manera hara el rollback y rehara las tablas.

También podemos hacer un rollback un poco mas eleborado por hacer solo un rollback hacia atras. Veamos un ejemplo:

php artisan migrate:rollback –step=1

ejemplo de php artisan migrate:rollback –step=1

referencias:
https://laravel.com/docs/5.8/migrations#column-modifiers

Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Last 4 post in same category