Переименование полей в миграциях Laravel
Иногда имя колонки перестает подходить:
в коде уже используют title,
а в базе поле все еще называется
name. Можно удалить старое
поле и создать новое, но тогда
потеряются данные. Проще переименовать
колонку миграцией.
Для этого в Schema::table
используют метод renameColumn.
Первым параметром передают старое
имя поля, вторым - новое:
<?php
Schema::table('posts', function (Blueprint $table) {
$table->renameColumn('name', 'title');
});
?>
После применения такой миграции
в таблице останется то же содержимое,
изменится только имя колонки.
В PMA или SQLite-файле вы увидите
уже title вместо name.
Пример миграции для таблицы пользователей:
<?php
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('name', 'first_name');
$table->renameColumn('surname', 'second_name');
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('first_name', 'name');
$table->renameColumn('second_name', 'surname');
});
}
?>
В методе down имена меняют
обратно - так откат вернет
прежнюю структуру. Не забудьте
после переименования поправить
код приложения: модели, формы
и запросы должны использовать
новые имена полей.
В таблице с юзерами переименуйте
поле name в поле first_name,
а поле surname в second_name.
Зачем переименовывать колонку, а не удалять и создавать заново?