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

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

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

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

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

1.安装

composerrequirenhzex/think-phinx

2.执行

phpvendor/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';returnarray("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

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

publicfunctionchange(){$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,作为主键

执行

phpvendor/bin/phinxmigrate

8.初始化数据

执行

phpvendor/bin/phinxseed:createCategorySeeder

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

9.修改 CategorySeeder.php

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

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

phpvendor/bin/phinxseed:run-sCategorySeeder

11.更新表结构

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

执行

phpvendor/bin/phinxcreateChangeArtist

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

publicfunctionchange(){$this->execute('altertableresourcedropcolumnartist;');$resource=$this->table('resource');$resource->addColumn('artist','string',['limit'=>128,'default'=>'']);$resource->update();}

最后执行php vendor/bin/phinx migrate

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

12.回滚

phpvendor/bin/phinxrollback

13.数据填充

phpvendor/bin/phinxseed:createUserSeederphpvendor/bin/phinxseed:run-eproduct

生成文件

<?phpusePhinx\Seed\AbstractSeed;classUserSeederextendsAbstractSeed{/***插入数据*/publicfunctionrun(){$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" 这里是记录变更记录的,这也是保障不会重复执行的一个措施,所以不用担心丢失或者重复操作执行命令。

产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;

日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉

本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;

部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入

如若转载,请注明出处:https://www.chanpinyuan.cn/34091.html;
(0)
上一篇 2023年1月23日 下午4:17
下一篇 2023年1月23日 下午4:17

相关推荐

发表回复

登录后才能评论
分享本页
返回顶部