文档地址:https://tsy12321.gitbooks.io/phinx-doc/content
1.安装
composer require nhzex/think-phinx
2.执行
PHP vendor/bin/phinx
直接运行 PHP vendor/bin/phinx init 可生成配置文件
直接运行 PHP vendor/bin/phinx init 可生成配置文件
<?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(); }
执行 PHP vendor/bin/phinx migrate
8.初始化数据
执行 PHP vendor/bin/phinx seed:create CategorySeeder
系统自动创建 created ./db/seeds/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
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] 举报,一经查实,本站将立刻删除。