我是cakephp3.refer http://book.cakephp.org/3.0/en/migrations.html的新手并尝试使用terminal创建数据库。例如:
bin/cake bake migration CreateProducts name:string description:text created modified
此命令创建文件,当在下面使用命令时,它在phpmyadmin中创建数据库表:
bin/cake migrations migrate
但我想更新表,在其中添加一列...所以当我尝试更新数据库表时,它会创建另一个迁移文件..每当我想要更新数据库表时......这些似乎已经过了...因为我想要更新单个表.. 有没有办法,所以每次通过迁移更新数据库表都有相同的功能?
答案 0 :(得分:2)
使用迁移时,请参阅数据库中有一个表名phinxlog
。在此表中有一个名为version
的字段名称。什么时候你会发出命令
bin/cake migrations migrate
然后此表将更新。现在看版本字段,这里有一些数字,如20150911090111
。这个数字实际上是随你的迁移文件添加的,对吗?
如果已在phinxlog
表中访问此号码,则此文件将永远不会再次访问。这意味着在您的命令
bin/cake migrations migrate
该命令不适用于已在pinixlog
表中访问的此文件。
所以不要害怕是否已创建另一个迁移文件。 有关添加新列的信息,请参阅
How to add a field in database table by cakephp migration?
是的,也可以在旧的迁移文件中添加新列,只需像
一样手动添加->addColumn('field_name', 'types', [
'default' => null,
'limit' => 11,
'null' => false,
])
然后重命名文件名。然后再次给migration migrate
。我希望它现在可以正常工作。