在cakephp3中迁移

时间:2015-10-09 07:10:26

标签: mysql cakephp database-migration phinx

我是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

但我想更新表,在其中添加一列...所以当我尝试更新数据库表时,它会创建另一个迁移文件..每当我想要更新数据库表时......这些似乎已经过了...因为我想要更新单个表.. 有没有办法,所以每次通过迁移更新数据库表都有相同的功能?

1 个答案:

答案 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。我希望它现在可以正常工作。