Изменить перечисление столбца таблицы в LARAVEL - PullRequest
0 голосов
/ 07 июня 2018

У меня есть таблица, которую я создал путем миграции, и я установил столбец в таблице валют на enum, и он может содержать только 3 значения.Как я могу изменить столбец symbol на varchar в тот момент, когда symbol имеет свойство enum, а также удалить переменную $symbols из столбца

Это моя миграция

public function up()
{
    $symbols = ['₦', '$', '£'];
    Schema::create('currencies', function (Blueprint $table) use($symbols) {
        $table->increments('id');
        $table->string('name', 50);
        $table->string('code', 5);
        $table->enum('symbol', $symbols);
        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{   
    DB::statement('SET FOREIGN_KEY_CHECKS = 0');
    Schema::dropIfExists('currencies');
    DB::statement('SET FOREIGN_KEY_CHECKS = 1');
}

1 Ответ

0 голосов
/ 07 июня 2018

Создайте новую миграцию со следующими шагами / компонентами:

  • Сначала переименуйте текущий столбец символов во что-то еще.
  • Затем создайте столбец символов так, чтобывы хотите, например, как вы сказали, как varchar.

    Schema::table('currencies', function (Blueprint $table) {
        $table->renameColumn('symbol','tempName'); //Rename to temp column
        $table->string('symbol'); //New symbol column
    });
    
  • Затем выполните цикл по всем существующим строкам и возьмите значение временного столбца, которому вы переименовали символ, и установитеих на вновь созданной колонке символов.(Это можно сделать несколькими способами, вы сможете это понять)

  • Затем удалите временный столбец.

    Schema::table('currencies', function (Blueprint $table) {
        $table->dropColumn('tempName'); //Remove the temp column
    });
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...