fbpx

MIGRACIONES EN LARAVEL


A medida que crea su aplicación, puede acumular más y más migraciones a lo largo del tiempo. Esto puede hacer que su directorio de migración se infle con potencialmente cientos de migraciones. Si lo desea, puede «aplastar» sus migraciones en un solo archivo SQL. Para comenzar, ejecute el comando schema: dump:

esquema artesanal php: volcado

// Volcar el esquema de la base de datos actual y eliminar todas las migraciones existentes …
esquema artesanal de php: dump –prune

Son ideales para trabajar en equipo, dado que elimina la necesidad de enviar fragmentos de SQL a través de email, mensajería, etc. Los programadores simplemente necesitan generar una nueva migración, escribir los cambios a la base de datos en ella y el resto del equipo puede simplemente ejecutar la migración.

ESTRUCTURA DE MIGRACION

Una clase de migración contiene dos métodos: hacia arriba y hacia abajo. El método up se usa para agregar nuevas tablas, columnas o índices a su base de datos, mientras que el método down debe revertir las operaciones realizadas por el método up.

Dentro de estos dos métodos, puede utilizar el generador de esquemas de Laravel para crear y modificar tablas de forma expresiva. Para conocer todos los métodos disponibles en el generador de esquemas, consulte su documentación. Por ejemplo, la siguiente migración crea una tabla de vuelos:

<?php

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

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

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

Modificar tablas existentes

A veces, necesita cambiar su estructura de tabla existente como renaming/deleting columnas. Lo que puede lograr creando una nueva migración. Y en el método up de su migración.

//Renaming Column.

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->renameColumn('email', 'username');
    });
}

El ejemplo anterior cambiará el nombre de la email column de email column de la users table de users table a username de username . Mientras que el siguiente código elimina un username de username columna de la tabla de users .

IMPROTANTE: para modificar columnas, debe agregar la dependencia doctrine/dbal al archivo composer.json del proyecto y ejecutar la composer update para reflejar los cambios.

//Droping Column
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('username');
    });
}
LOS ARCHIVOS DE MIGRACION

Las migraciones en una aplicación Laravel viven en el directorio database/migrations . Sus nombres de archivos se ajustan a un formato particular:

<year>_<month>_<day>_<hour><minute><second>_<name>.php

Un archivo de migración debe representar una actualización de esquema para resolver un problema particular. Por ejemplo:

2016_07_21_134310_add_last_logged_in_to_users_table.php

Las migraciones de la base de datos se mantienen en orden cronológico para que Laravel sepa en qué orden ejecutarlas. Laravel siempre ejecutará migraciones de la más antigua a la más nueva.

Generando archivos de migración

Crear un nuevo archivo de migración con el nombre de archivo correcto cada vez que necesite cambiar su esquema sería una tarea. Afortunadamente, el comando artisan de Laravel puede generar la migración para usted:

php artisan make:migration add_last_logged_in_to_users_table

También puede usar los --table y --create con el comando anterior. Estos son opcionales y solo por conveniencia, e insertarán el código relevante en el archivo de migración.

php artisan make:migration add_last_logged_in_to_users_table --table=users

php artisan make:migration create_logs_table --create=logs

Puede especificar una ruta de salida personalizada para la migración generada usando la opción --path . La ruta es relativa a la ruta base de la aplicación.

php artisan make:migration --path=app/Modules/User/Migrations

EJECUTANDO MIGRACIONES

Una vez que se haya escrito su migración, la ejecución aplicará las operaciones a su base de datos.

php artisan migrate

Si todo salió bien, verás una salida similar a la siguiente:

Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table

Laravel es lo suficientemente inteligente como para saber cuándo está ejecutando migraciones en el entorno de producción. Si detecta que está realizando una migración destructiva (por ejemplo, una que elimina una columna de una tabla), el comando de php artisan migrate le pedirá confirmación. En entornos de entrega continua esto puede no ser deseado. En ese caso, use la bandera --force para omitir la confirmación:

php artisan migrate --force

Si acaba de ejecutar migraciones, puede confundirse al ver la presencia de una tabla de migrations en su base de datos. Esta tabla es lo que utiliza Laravel para realizar un seguimiento de las migraciones que ya se han ejecutado. Al emitir el comando migrate , Laravel determinará qué migraciones aún deben ejecutarse, las ejecutará en orden cronológico y luego actualizará la tabla de migrations para que se adapte.

Nunca debe editar manualmente la tabla de migrations menos que sepa absolutamente lo que está haciendo. Es muy fácil dejar inadvertidamente su base de datos en un estado defectuoso en el que las migraciones fallarán.

Leave a Reply