Выполнить определенный код при выполнении методов миграции вверх и вниз в laravel - PullRequest
1 голос
/ 15 октября 2019

У меня есть приложение Laravel с таблицей users, содержащей около 5000 записей. В таблице есть столбец name, который необходимо заменить на first_name и last_name.

С помощью простого сценария миграции я обновил схему и написал простую ремесленную команду, чтобы разделить имя на первое и последнее и восстановить в БД.

Теперь, откатывая миграцию, я теряю столбец last_name вместе с данными. То, что я ищу, это то, как я могу запустить что-то после выполнения метода up и перед методом down.

Что было бы наиболее подходящим способом для достижения этого?

Миграция:

class ChangeColumnsInUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->renameColumn('name', 'first_name');
            $table->string('last_name')->after('name');
        });
    }

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

1 Ответ

0 голосов
/ 16 октября 2019

Рассматривали ли вы добавление «простого сценария» к функциям up() и down() самой миграции? Что-то вроде этого будет работать правильно?

    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->string('first_name');
            $table->string('last_name');
        });

        // Fill the first_name and last_name based on the name column

        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('name');
        });
    }

То же самое можно сделать для метода down(), за исключением обратного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...