我试图弄清楚如何使用CakePHP Migrations插件最好地修改MySQL Table的现有列。我不需要添加或删除列,我只想修改字符串列的长度。
目前,该列定义为varchar(50)
;我正在重新调整该列,并希望将其定义为varchar(2000)
。
迁移的目标是成为典型Web服务器上标准CakePHP Web应用程序安装的自动部署的一部分。
我可以说,看起来使用迁移插件实现此目的的唯一方法(除了ALTER
语句之外)将是:
也许我错过了文档和无数教程中的讨论以及如何以更好的方式实现这一目标,但这似乎是一种麻烦且自我挫败的方法。
我已经浏览了CakePHP Migration Plugin's documentation和Phinx's documentation,但未能看到此更改的推荐方法。我很感激为此提供任何意见。
答案 0 :(得分:7)
不幸的是,Phinx文档并不完整,似乎有各种未记录的方法,例如您正在寻找的方法:\Phinx\Db\Table::changeColumn()
以下内容应该有效
$table = $this->table('table_name');
$table->changeColumn('column_name', 'string', [
'limit' => 2000
]);
$table->update();