CakePHP 3.x 数据库迁移插件:有没有办法更改 table 字段?
CakePHP 3.x Database Migration Plugin: Is there a way to Change a table field?
我正在尝试弄清楚如何最好地使用 CakePHP 迁移插件修改 MySQL Table 的现有列。我不需要添加或删除列,我只想修改字符串列的长度。
当前列定义为varchar(50)
;我正在重新调整该列的用途并希望将其定义为 varchar(2000)
。
迁移的目标是成为在典型 Web 服务器上的标准 CakePHP Web 应用程序安装上进行的自动部署的一部分。
据我所知,使用迁移插件完成此操作的唯一方法(除了 ALTER
语句)似乎是:
- 重命名列
- 添加新列
- Move/copy现有数据到新列
- 删除旧列
也许我错过了文档和无数教程中的讨论以及如何找到更好的方法来完成此任务,但这似乎是一种麻烦且弄巧成拙的方法。
我已经完成了这两个 CakePHP Migration Plugin's documentation and the Phinx'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();
我正在尝试弄清楚如何最好地使用 CakePHP 迁移插件修改 MySQL Table 的现有列。我不需要添加或删除列,我只想修改字符串列的长度。
当前列定义为varchar(50)
;我正在重新调整该列的用途并希望将其定义为 varchar(2000)
。
迁移的目标是成为在典型 Web 服务器上的标准 CakePHP Web 应用程序安装上进行的自动部署的一部分。
据我所知,使用迁移插件完成此操作的唯一方法(除了 ALTER
语句)似乎是:
- 重命名列
- 添加新列
- Move/copy现有数据到新列
- 删除旧列
也许我错过了文档和无数教程中的讨论以及如何找到更好的方法来完成此任务,但这似乎是一种麻烦且弄巧成拙的方法。
我已经完成了这两个 CakePHP Migration Plugin's documentation and the Phinx'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();