Buscar..


Migraciones

Para controlar su base de datos en Laravel es mediante el uso de migraciones. Crear migración con artesano:

php artisan make:migration create_first_table --create=first_table

Esto generará la clase CreateFirstTable. Dentro del método up puedes crear tus columnas:

<?php

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

class CreateFirstTable extends Migration
{
    public function up()
    {
        Schema::create('first_table', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_string_column_name');
            $table->integer('secont_integer_column_name');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('first_table');
    }
} 

Al final para ejecutar todas sus clases de migraciones, puede ejecutar el comando artisan:

php artisan migrate

Esto creará sus tablas y sus columnas en su base de datos. Otros comandos de migración útiles son:

  • php artisan migrate:rollback - Rollback la última migración de base de datos
  • php artisan migrate:reset - Deshacer todas las migraciones de bases de datos
  • php artisan migrate:refresh - Restablecer y volver a ejecutar todas las migraciones
  • php artisan migrate:status - Muestra el estado de cada migración

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 migración

Las migraciones en una aplicación Laravel 5 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

Dentro de una migración de base de datos

Cada migración debe tener un método up() y un método down() . El propósito del método up() es realizar las operaciones requeridas para poner el esquema de la base de datos en su nuevo estado, y el propósito del método down() es revertir cualquier operación realizada por el método up() . Asegurarse de que el método down() invierta correctamente sus operaciones es fundamental para poder revertir los cambios del esquema de la base de datos.

Un ejemplo de archivo de migración puede verse así:

<?php

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

class AddLastLoggedInToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dateTime('last_logged_in')->nullable();
        });
    }

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

Al ejecutar esta migración, Laravel generará el siguiente SQL para ejecutarse en su base de datos:

ALTER TABLE `users` ADD `last_logged_in` DATETIME NULL

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.

Migraciones de retroceso

¿Qué sucede si desea revertir la última migración, es decir, la operación reciente, puede usar el comando awesome rollback . Pero recuerde que este comando solo retrocede la última migración, que puede incluir múltiples archivos de migración

php artisan migrate:rollback

Si está interesado en revertir todas las migraciones de su aplicación, puede usar el siguiente comando

php artisan migrate:reset 

Además, si eres un vago como yo y quieres retroceder y migrar con un solo comando, puedes usar este comando

php artisan migrate:refresh
php artisan migrate:refresh --seed

También puede especificar el número de pasos para revertir con la opción de step . Al igual que esto hará retroceder 1 paso.

php artisan migrate:rollback --step=1


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow