原创

php数据库迁移工具2phoenix的用法


php迁移工具phoenix的用法

安装

  1. composer require lulco/phoenix
  2. composer require fakerphp/faker

配置
创建目录

参考的各大框架都是这样弄的 m代表migrations s代表seeds。

创建配置文件

  1. <?php
  2. return [
  3. 'migration_dirs' => [
  4. 'm' => __DIR__ . '/database/m',
  5. 's' => __DIR__ . '/database/s',
  6. ],
  7. 'environments' => [
  8. 'local' => [
  9. 'adapter' => 'mysql',
  10. 'host' => 'localhost',
  11. 'port' => 3306, // optional
  12. 'username' => 'root',
  13. 'password' => 'root',
  14. 'db_name' => 'blog',
  15. 'charset' => 'utf8mb4',
  16. ],
  17. 'production' => [
  18. 'adapter' => 'mysql',
  19. 'host' => 'production_host',
  20. 'port' => 3306, // optional
  21. 'username' => 'user',
  22. 'password' => 'pass',
  23. 'db_name' => 'blog',
  24. 'charset' => 'utf8mb4',
  25. ],
  26. ],
  27. 'default_environment' => 'local',
  28. 'log_table_name' => 'phoenix_log',
  29. ];

执行迁移文档指定目录

  1. php vendor/bin/phoenix migrate -c config/phoenix.php -e develop

创建迁移文件

  1. php vendor/bin/phoenix create Approval -c config/phoenix.php

推荐用原生sql创建数据库

  1. <?php
  2. use Phoenix\Migration\AbstractMigration;
  3. class User extends AbstractMigration
  4. {
  5. protected function up(): void
  6. {
  7. $this->execute(
  8. "create table lu_user
  9. (
  10. id int not null auto_increment primary key,
  11. username varchar(10) comment '用户名',
  12. password varchar(32) comment '密码',
  13. phone varchar(11) comment '注册手机号',
  14. email varchar(50) unique comment '邮箱',
  15. last_login_ip char (15) comment '最后登录IP地址',
  16. last_login_time timestamp null comment '最后登录的时间',
  17. active tinyint not null default 0 comment '激活状态 0:未激活 1:激活',
  18. create_time timestamp null comment '创建时间',
  19. update_time timestamp null comment '更新时间',
  20. delete_time timestamp null comment '删除时间'
  21. );"
  22. );
  23. }
  24. protected function down(): void
  25. {
  26. $this->execute(
  27. "drop table lu_user;"
  28. );
  29. }
  30. }

执行迁移

  1. php vendor/bin/phoenix migrate --dir m

回退

  1. php vendor/bin/phoenix rollback --dir m

填充

由于lulco/phoenix这个包是没有这个功能的,但是其实填充也是可以当作一个普通的迁移文件来执行的,所以创建迁移文件的时候,我们可以单独创建

UserSeeder来当作填充文件,存放的目录我们放在s目录

  1. php vendor\bin\phoenix create UserSeeder s
  1. <?php
  2. use Phoenix\Migration\AbstractMigration;
  3. class UserSeeder extends AbstractMigration
  4. {
  5. protected function up(): void
  6. {
  7. $faker = Faker\Factory::create('zh_CN');
  8. $data = [];
  9. for ($i = 0; $i < 100; $i++) {
  10. $data[] = [
  11. 'username' => $faker->randomLetter . $faker->unique()->randomNumber(5, true),
  12. 'password' => $faker->password,
  13. 'phone' => $faker->phoneNumber,
  14. 'email' => $faker->email,
  15. 'last_login_ip' => $faker->ipv4,
  16. 'last_login_time' => date('Y-m-d H:i:s'),
  17. 'active' => [0, 1][rand(0, 1)],
  18. 'create_time' => date('Y-m-d H:i:s'),
  19. 'update_time' => date('Y-m-d H:i:s'),
  20. 'delete_time' => date('Y-m-d H:i:s'),
  21. ];
  22. }
  23. //清空表
  24. $this->table('lu_user')->truncate();
  25. //插入数据
  26. $this->insert('lu_user',$data);
  27. //更新数据,方便我们测试
  28. $this->update('lu_user',['username'=>'admin','password'=>'admin123'],['id'=>1]);
  29. }
  30. protected function down(): void
  31. {
  32. $this->table('lu_user')->truncate();
  33. }
  34. }

执行整个s目录进行填充

  1. php vendor/bin/phoenix migrate --dir s

单独执行某个文件

  1. php vendor/bin/phoenix migrate --class UserSeeder
留言反馈
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈