3

我试图弄清楚如何最好地使用 CakePHP Migrations 插件来修改 MySQL 表的现有列。我不需要添加或删除列,我只是想修改字符串列的长度。

目前该列被定义为varchar(50); 我正在重新利用该列并希望将其定义为varchar(2000).

迁移的目标是成为在典型 Web 服务器上安装标准 CakePHP Web 应用程序的自动化部署的一部分。

据我所知,使用迁移插件完成此任务的唯一方法(除了ALTER声明)似乎是:

  1. 重命名列
  2. 添加新列
  3. 将现有数据移动/复制到新列
  4. 删除旧列

也许我错过了文档和无数教程中的讨论,以及如何找到更好的方法来实现这一点,但这似乎是一种麻烦和自我挫败的方法。

我已经阅读了CakePHP Migration Plugin 的文档Phinx 的文档,但没有看到推荐的更改方法。我很感激对此的任何意见。

4

1 回答 1

9

不幸的是,Phinx 文档并不完整,似乎有各种未记录的方法,例如您正在寻找的方法:\Phinx\Db\Table::changeColumn()

以下应该工作

$table = $this->table('table_name');
$table->changeColumn('column_name', 'string', [
    'limit' => 2000
]);
$table->update();
于 2015-11-22T17:05:17.410 回答