• 技术文章 >后端开发 >php教程

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

    长期闲置长期闲置2022-02-17 10:51:30转载307
    本篇文章给大家分享关于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视频教程

    以上就是教你使用PHP数据库迁移工具“Phinx”的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:Laravel技术社区公众号,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP
    上一篇:一文详解Windows和Linux环境下怎么安装配置PHP 下一篇:PHP 安装配置教程大全(最新)
    PHP编程就业班

    相关文章推荐

    • ThinkPhp5.1 + jSignature实现在线签名功能• php怎么去掉数组键名并保留键值• 详解win10下PHP的安装配置(以php5.6为例)• 第19期PHP直播班,开课啦!• php给三个数排序的最简方法是什么

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网