我试图找出如何最好地使用cakephp迁移插件修改mysql表的现有列。我不需要添加或删除列,我只想修改字符串列的长度。
目前该列定义为varchar(50);我正在重新调整该列的用途,并希望将其定义为varchar(2000)
迁移的目标是成为在典型web服务器上的标准cakephp web应用程序安装上进行的自动化部署的一部分。
就我所知,使用迁移插件来实现这一点的唯一方法(除了ALTER语句)将是:
重命名列
添加新列
将现有数据移动/复制到新列
删除旧列
也许我错过了文档和无数教程中的讨论,也错过了如何找到更好的方法来实现这一点,但这似乎是一种麻烦且自欺欺人的方法。
我已经通过了CakePHP Migration Plugin's documentationPhinx's documentation两个步骤,但是没有看到建议的方法来进行此更改。我很感激你的意见。

最佳答案

不幸的是,phinx文档并没有那么完整,似乎有各种各样的未记录的方法,比如您正在寻找的方法:\Phinx\Db\Table::changeColumn()
https://github.com/robmorgan/phinx/blob/v0.4.6/src/Phinx/Db/Table.php#L392
https://github.com/robmorgan/phinx/issues/682
下面应该有用

$table = $this->table('table_name');
$table->changeColumn('column_name', 'string', [
    'limit' => 2000
]);
$table->update();

07-28 09:56