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.