Плагин переноса базы данных CakePHP 3.x: есть ли способ изменить поле таблицы?

Я пытаюсь выяснить, как лучше всего изменить существующую колонку таблицы MySQL с помощью плагина CakePHP Migrations. Мне не нужно добавлять или удалять столбец, я просто хочу изменить длину столбца строки.

В настоящее время столбец определяется как varchar(50); Я переназначаю столбец и хочу определить его как varchar(2000),

Целью миграции является участие в автоматическом развертывании, выполняемом при стандартной установке веб-приложения CakePHP на типичном веб-сервере.

Насколько я могу судить, это выглядит как единственный путь (кроме ALTER заявление), чтобы выполнить это с помощью плагина миграции:

  1. переименовать колонку
  2. добавить новый столбец
  3. Переместить / скопировать существующие данные в новый столбец
  4. брось старый столбец

Возможно, я пропустил обсуждение в документах и ​​бесчисленных уроках и о том, как найти лучший способ сделать это, но это кажется громоздким и самоубийственным методом.

Я ознакомился как с документацией модуля миграции CakePHP, так и с документацией Phinx, но не смог найти рекомендуемый метод для этого изменения. Я ценю любой вклад для этого.

1 ответ

Решение

К сожалению, документы Phinx не так полны, кажется, существуют различные недокументированные методы, например, тот, который вы ищете: \Phinx\Db\Table::changeColumn()

Следующее должно работать

$table = $this->table('table_name');
$table->changeColumn('column_name', 'string', [
    'limit' => 2000
]);
$table->update();
Другие вопросы по тегам