千家信息网

如何使用PHP数据库迁移工具Phinx

发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,这篇文章给大家分享的是有关如何使用PHP数据库迁移工具Phinx的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.安装composer require nhzex/thin
千家信息网最后更新 2024年10月24日如何使用PHP数据库迁移工具Phinx

这篇文章给大家分享的是有关如何使用PHP数据库迁移工具Phinx的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1.安装

composer require nhzex/think-phinx

2.执行

php vendor/bin/phinx

直接运行 php vendor/bin/phinx init 可生成配置文件

另外一种方法是直接使用php文件做配置文件

直接运行 php vendor/bin/phinx init 可生成配置文件

另外一种方法是直接使用php文件做配置文件

3.使用phinx.php进行配置

 'localhost',    'DB_NAME' => 'root',    'DB_USER' => 'root',    'DB_PWD' => '',);$settings = $config;#phinx.php array(        "migrations"    => "db/migrations",        "seeds"         => "db/seeds"    ),    "environments"   => array(        "defaut_migration_table"    => "phinxlog",        "default_database"          => "lleg",        "default_environment"       => "development"        "production"   => array(            "adapter"   => "mysql",            "host"      => $settings["DB_HOST"],            "name"      => $settings["DB_NAME"],            "user"      => $settings["DB_USER"],            "pass"      => $settings["DB_PWD"],            "port"      => 3306,            "charset"   => "utf8"        ),        "development"   => array(            "adapter"   => "mysql",            "host"      => $settings["DB_HOST"],            "name"      => $settings["DB_NAME"],            "user"      => $settings["DB_USER"],            "pass"      => $settings["DB_PWD"],            "port"      => 3306,            "charset"   => "utf8"        )    ));

4.执行 php vendor/bin/phinx status 查看连接状态

5.执行 php vendor/bin/phinx create migration

6.现在生成了created /db/migrations/20180310020523_migration.php

编辑这个文件,添加数据库创建内容.

public function change() {        $user = $this->table('user');        $user->addColumn('open_id', 'string', ['limit'=>64]);        $user->addColumn('register_time', 'timestamp', ['default' => 'CURRENT_TIMESTAMP']);        $user->addColumn('favorite_music', 'integer', ['default'=> 0, 'comment'=>'喜欢的音乐']);        $user->addColumn('favorite_vedio', 'integer', ['default'=> 0, 'comment'=>'喜欢的视频数']);        $user->addColumn('favorite_article', 'integer', ['default'=> 0, 'comment'=>'喜欢的文章数']);        $user->addColumn('baby_birthday', 'date', ['null'=>true, 'comment'=>'宝宝生日']);        $user->addColumn('baby_sex', 'boolean', ['null'=>true, 'comment'=>'宝宝性别']);        $user->addColumn('last_login', 'datetime', ['null'=>true, 'comment'=>'最后登陆日期']);        $user->save();    }

7.默认会添加一个自增id,作为主键

执行 php vendor/bin/phinx migrate

8.初始化数据

执行 php vendor/bin/phinx seed:create CategorySeeder

系统自动创建 created ./db/seeds/CategorySeeder.php

9.修改 CategorySeeder.php

执行 php vendor/bin/phinx seed:run 将会进行所有Seed

10.如果想运行指定的Seed需要用- s参数指定

php vendor/bin/phinx seed:run -s CategorySeeder

11.更新表结构

当需要更新表结构的时候,需要再创建一个migrate

执行php vendor/bin/phinx create ChangeArtist

再将需要更新的内容写到change函数

public function change() {        $this->execute('alter table resource drop column artist ;');        $resource = $this->table('resource');        $resource->addColumn('artist', 'string', ['limit'=>128, 'default'=>'']);        $resource->update();    }

最后执行php vendor/bin/phinx migrate

之前的已经执行过的migrate不会执行, 只会执行更新的部分。

12.回滚

php vendor/bin/phinx rollback

13.数据填充

php vendor/bin/phinx seed:create UserSeederphp vendor/bin/phinx seed:run -e product

生成文件

 1,          ),          array(              'id'    => 2,          )        );        $posts = $this->table('users');        $posts->insert($data)->save();    }}

phinx特别适合在开发,测试,线上数据库同步字段信息,数据信息,生成和同步测试数据等,所以特别适合在团队开发流程中使用,尤其是对于一个新项目,只要在项目的开始就一直坚持使用phinx独立部署,那么每次变更数据库表信息团队成员都可以通过git或者svn的方式同步代码然后执行上面提到的执行命令来同步库表信息,以此避免传统开发时不同开发环境同步库表信息的繁琐和失误的情况。

在phinx.php 有一个配置项"default_migration_table" => "phinxlog" 这里是记录变更记录的,这也是保障不会重复执行的一个措施,所以不用担心丢失或者重复操作执行命令。

感谢各位的阅读!关于"如何使用PHP数据库迁移工具Phinx"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0