1

我是 cakephp3 的新手。请参阅http://book.cakephp.org/3.0/en/migrations.html并尝试使用终端创建数据库。例如:

bin/cake bake migration CreateProducts name:string description:text created modified

此命令创建文件,当使用以下命令时,它会在 phpmyadmin 中创建数据库表:

bin/cake migrations migrate

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

4

1 回答 1

2

当您使用迁移时,请参阅数据库中有一个表名phinxlog。在此表中有一个名为 的字段名称version。你什么时候下达命令

bin/cake migrations migrate

然后这个表将被更新。现在查看版本字段,这里有一些数字,例如20150911090111. 这个数字实际上是在您的迁移文件中添加的,对吗​​?

如果此编号已在您的phinxlog表中访问过,则此文件将永远不会再次访问。这意味着在你的命令之后

 bin/cake migrations migrate

该命令将不适用于已在pinixlog表中访问的此文件。

因此,如果已创建另一个迁移文件,请不要害怕。如需添加新列,请参阅

如何通过 cakephp 迁移在数据库表中添加字段?

是的,也可以在旧迁移文件中添加新列,只需手动添加

->addColumn('field_name', 'types', [
                'default' => null,
                'limit' => 11,
                'null' => false,
 ])

然后重命名文件名。然后再给一次。我migration migrate希望它现在可以工作。

于 2015-10-09T08:24:36.177 回答