Как добавить обнуляемый тип столбца в уже перенесенную таблицу - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть миграция с $table->datetime('published_at');, и она уже перенесена, и данные заполнены. Теперь я должен сделать этот столбец ->nullable(), но без использования migrate:refresh или rollback.Как я могу добиться этого или это вообще возможно.

Примечание: нет необработанных запросов SQL или phpmyadmin.Ищем способы миграции.

Ответы [ 3 ]

1 голос
/ 03 апреля 2019

Вы можете создать новую миграцию:

php artisan make:migration change_published_at_to_nullable

Это создаст новый файл миграции с именем

XXXX_YYY_ZZZ_000000_change_published_at_to_nullable.php

В этом файле миграции добавьте следующий код:

public function up(){
  Schema::table("table", function (Blueprint $table) {
    $table->string("published_at")->nullable()->change();
  });
}

public function down(){
  Schema::table("table", function (Blueprint $table) {
    $table->string("published_at")->nullable(false)->change();
  });
}

При выполнении команды php artisan migrate столбец published_at будет изменен, чтобы разрешить null. Если вам необходимо изменить это, php artisan migrate:refresh, или php artisan migrate:reset, или php artisan migrate:rollback --step изменит столбец обратно, чтобы разрешить not null.

1 голос
/ 03 апреля 2019

создайте новую миграцию и добавьте следующий код:

Schema::table('table_name', function (Blueprint $table) {
    $table->string('published_at')->nullable()->change();
});

или при использовании mysql:

Вы можете изменить структуру таблицы непосредственно в phpmyadmin

Перейти к phpmyadmin -> таблица -> структура

редактировать столбец publishd_at и поставить отметку null

0 голосов
/ 03 апреля 2019

Простой способ - просто выполнить запрос, подобный следующему:

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