@arms1631

Как изменить типа данных столбца базы данных в Laravel?

Есть столбец "YEAR" в таблице БД. У него стоит тип данных "STRING". Мне нужно изменить тип данных на "INTEGER".
Я установил doctrine/dbal. Прописываю миграцию:
php artisan make:migration alter_table_films_change_year --table=films

В самом классе миграции:

public function up()
{
Schema::table('films', function (Blueprint $table) {
$table->integer('year')->change();
});
}

/**
* Reverse the migrations.
*
*/
public function down()
{
Schema::table('films', function (Blueprint $table) {
$table->string('year')
});
}

Но выдает ошибку:

Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 (SQL: ALTER TABLE films CHANGE year year INT DEFAULT Не указано)

В таблице БЛ в столбце "YEAR" данные уже есть в виде строк вида "2020" и тп, возможно, из-за этого беда, хотя вряд ли
Помогите разобраться в вопросе, пока решения я не нашел
  • Вопрос задан
  • 1020 просмотров
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Дефолт стоит для строкового поля?
Измените его тоже

$table->integer('year')->nullable()->default(null)->change();


Ну и, возможно, придется руками пройтись по таблице и убрать из этого поля значения "Не указано", так как оно не может быть преобразовано в целочисленный тип.

Можно запросом, прямо в миграции

Film::whereYear('Не указано')->update(['year' => null])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы