当前位置: 首页 > 工具软件 > Phinx > 使用案例 >

php迁移工具phinx使用

伍宝
2023-12-01
咱不用laravel那个,保持composer各组件独立性。
官网:[url]https://phinx.org/[/url]

composer安装

"robmorgan/phinx":"0.8.1"


我的项目叫t3,下面有一个public,这个public是web根目录。
现在,我在t3下建立一个db目录,与public同级。与vendor同级。
db下再建两个目录,migrations和seeds。
cmd下。
进入t3目录
执行命令。

vendor\bin\phinx.bat init


此时有提示,发现t3目录下多了phinx.xml文件。这就是配置文件

立刻修改这个文件,注意他的default_database字段,修改那里的内容即可(默认有3个环境)
例如:
包括主机名,用户,密码,库名,文字编码等。


现在开始生成文件,假设我想建表
test2,字段name,pass,create_time。

执行命令

vendor\bin\phinx.bat create Test2


这时发现migrations下多了一个文件

修改文件内容

<?php

use Phinx\Migration\AbstractMigration;

use Phinx\Db\Adapter\MysqlAdapter;

class Test2 extends AbstractMigration
{

public function change()
{
$table = $this->table('test2');
$table
->addColumn("user",'string' , [
'limit' => 50,
'null' => false,
'default' => '',
'comment' => '用户名称',
])
->addColumn('create_time', 'integer',[
'null' => false,
'default' => 0,
'comment' =>'创建时间' ,
])
->addColumn('is_del', 'integer',array(
'limit' => MysqlAdapter::INT_TINY,
'null' => false,
'default' =>0,
'comment' =>'是否删除' ,

))
->addIndex(['user']) //给user字段加索引。
->create();

}
}


现在执行命令


vendor\bin\phinx.bat migrate -e development
或者使用默认环境,参见配置文件
vendor\bin\phinx.bat migrate


也可以再执行一遍,不会有问题。

查库,发现表已建好。

用命令可查看状态,(哪些脚本被执行了。)
vendor\bin\phinx.bat status

现在我想回滚了。(默认只回滚一个文件)
vendor\bin\phinx.bat rollback

发现表删除了。好神奇!!

最后,用命令建立迁移任务文件时,类名不能重名,
不能再执行
vendor\bin\phinx.bat create Test2,因为该类已存在。

还有,回滚的函数是依据这几个函数来的

* createTable
* renameTable
* addColumn
* renameColumn
* addIndex
* addForeignKey


还有,表回滚了,里面的数据也丢失了,切记。
 类似资料: