微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

教你使用PHP数据库迁移工具“Phinx”

本篇文章给大家分享关于PHP处理中数据库迁移工具phinx的相关知识,phinx特别适合在开发、测试、线上数据库同步字段信息、数据信息、生成和同步测试数据等,希望对大家有帮助。

文档地址:https://tsy12321.gitbooks.io/phinx-doc/content

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进行配置

<?PHP
$config = array(
    'DB_HOST' => 'localhost',
    'DB_NAME' => 'root',
    'DB_USER' => 'root',
    'DB_PWD' => '',
);
$settings = $config;
#phinx.PHP
<?PHP
require 'db_config.PHP';
return array(
    paths => 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 UserSeeder
PHP vendor/bin/phinx seed:run -e product

生成文件

<?PHP
use phinx\Seed\AbstractSeed;
class UserSeeder extends AbstractSeed {
    /**
     * 插入数据
     */
    public function run() {
        $data = array(
          array(
              'id'    => 1,
          ),
          array(
              'id'    => 2,
          )
        );
        $posts = $this->table('users');
        $posts->insert($data)->save();
    }
}

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

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

推荐学习:《PHP教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐