Плагин переноса базы данных CakePHP 3.x: есть ли способ изменить поле таблицы?
Я пытаюсь выяснить, как лучше всего изменить существующую колонку таблицы MySQL с помощью плагина CakePHP Migrations. Мне не нужно добавлять или удалять столбец, я просто хочу изменить длину столбца строки.
В настоящее время столбец определяется как varchar(50)
; Я переназначаю столбец и хочу определить его как varchar(2000)
,
Целью миграции является участие в автоматическом развертывании, выполняемом при стандартной установке веб-приложения CakePHP на типичном веб-сервере.
Насколько я могу судить, это выглядит как единственный путь (кроме ALTER
заявление), чтобы выполнить это с помощью плагина миграции:
- переименовать колонку
- добавить новый столбец
- Переместить / скопировать существующие данные в новый столбец
- брось старый столбец
Возможно, я пропустил обсуждение в документах и бесчисленных уроках и о том, как найти лучший способ сделать это, но это кажется громоздким и самоубийственным методом.
Я ознакомился как с документацией модуля миграции CakePHP, так и с документацией Phinx, но не смог найти рекомендуемый метод для этого изменения. Я ценю любой вклад для этого.
1 ответ
К сожалению, документы Phinx не так полны, кажется, существуют различные недокументированные методы, например, тот, который вы ищете: \Phinx\Db\Table::changeColumn()
- https://github.com/robmorgan/phinx/blob/v0.4.6/src/Phinx/Db/Table.php
- https://github.com/robmorgan/phinx/issues/682
Следующее должно работать
$table = $this->table('table_name');
$table->changeColumn('column_name', 'string', [
'limit' => 2000
]);
$table->update();