文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 04:51

关注

这篇文章给大家分享的是有关如何使用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进行配置

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

生成文件

<?phpuse 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数据库迁移工具Phinx”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯