Вставить новые столбцы после определенных в миграции CakePhp
Как я могу вставить новые столбцы после определенных столбцов в уже существующей таблице в CakePhp.
Для базы я использую postgreSQL, поэтому я не могу использовать метод after внутри миграции. Есть ли еще какие-то способы решения моей проблемы?
я использовал такой код для миграции
public function change(): void
{
$table = $this
->table('table');
$table
->addColumn('name', 'string', [
'default' => '',
'null' => false,
'limit' => 255,
'after' => 'lastname',
])
->addColumn('name_en', 'string', [
'default' => '',
'null' => false,
'limit' => 255,
'after' => 'lastname',
])
->update();
}
Ответы (1 шт):
Автор решения: Rabban Keyak
→ Ссылка
В PostgreSQL столбцы всегда добавляются в конец. Вы можете использовать на выбор один из вариантов:
- Отказаться от идеи добавлять столбец не в конец. Тем более что практического смысла в этом в общем то нет (за исключением случаев оптимизации места, съедаемого выравниванием, и переноса фиксированных полей ближе к началу, а действительно больших полей ближе к концу).
- Создать новую таблицу, указав при пересоздании "правильный" порядок, перенести данные из старой таблицы в новую, удалить старую таблицу.
- Вместо добавления столбца осуществить нормализацию: создать новую таблицу, в которую разместить столбец первичных ключей и новый столбец, связать новую таблицу со старой. Но это не всегда возможно (не всегда имеет смысл).