Начиная с Laravel 11, в таких случаях миграция должна включать все атрибуты столбца, даже те, которые не изменяются. В противном случае эти атрибуты будут потеряны. Однако для меня это представляет проблему, поскольку я не хочу постоянно просматривать все атрибуты столбца и явно определять их.
- Изменение столбцов - Руководство по обновлению Laravel 11
Например, представьте, что у вас есть миграция, которая создает столбец голосов
с Атрибуты без знака, по умолчанию и комментарии:
Код: Выделить всё
Schema::create('users', function (Blueprint $table) {
$table->integer('votes')->unsigned()->default(1)->comment('The vote count');
});
Позже вы пишете миграцию, которая изменяет столбец на значение NULL, как
ну:
Код: Выделить всё
Schema::table('users', function (Blueprint $table) {
$table->integer('votes')->nullable()->change();
});
В Laravel 10 при этой миграции в столбце будут сохранены атрибуты без знака, по умолчанию и
комментария. Однако в Laravel 11
миграция теперь также должна включать все атрибуты,
ранее определенные в столбце. В противном случае они будут удалены:
Код: Выделить всё
Schema::table('users', function (Blueprint $table) {
$table->integer('votes')
->unsigned()
->default(1)
->comment('The vote count')
->nullable()
->change();
});
Как сохранить исходные настройки столбца при обновлении атрибутов существующего столбца при миграции с Laravel 11?
Код: Выделить всё
Schema::table('users', function (Blueprint $table) {
$table->integer('votes')->nullable()->change();
});
Ожидаемый результат: наряду с установкой для столбца значения NULL автоматически сохраняются значения без знака, default(1) и комментарий< /code> значения. И мне даже не хочется искать тип столбца при таком незначительном изменении — будь то строка, целое число и т. д., его точную длину и т. д.
Подробнее здесь:
https://stackoverflow.com/questions/792 ... sting-colu