easyswoole - 基于swoole扩展实现的一款高性能php框架

db-migrate

參照Laravel開發(fā)的easyswoole數(shù)據(jù)庫版本遷移工具。

組件要求

  • php: >=7.1.0
  • easyswoole/command: ^1.1
  • easyswoole/component: ^2.0
  • easyswoole/ddl: ^1.0
  • easyswoole/mysqli: ^2.2
  • easyswoole/spl: ^1.0
  • easyswoole/utility: ^1.0

安裝方法

composer require easyswoole/db-migrate

倉庫地址

easyswoole/db-migrate

基本使用

在全局 boostrap 事件中注冊 MigrateCommand 并添加配置信息

bootstrap.php

\EasySwoole\Command\CommandManager::getInstance()->addCommand(new \EasySwoole\DatabaseMigrate\MigrateCommand());
$config = new \EasySwoole\DatabaseMigrate\Config\Config();
// 數(shù)據(jù)地址
$config->setHost("127.0.0.1");
// 數(shù)據(jù)庫端口
$config->setPort(3306);
// 數(shù)據(jù)庫用戶名
$config->setUser("root");
// 數(shù)據(jù)庫密碼
$config->setPassword("123456");
// 數(shù)據(jù)庫庫名
$config->setDatabase("easyswoole");
// 數(shù)據(jù)庫超時時長
$config->setTimeout(5.0);
// 數(shù)據(jù)庫字符集
$config->setCharset("utf8mb4");
//===========可選配置修改項,以下參數(shù)均有默認(rèn)值===========
// 遷移記錄的數(shù)據(jù)庫表名
$config->setMigrateTable("migrations");
// 遷移文件目錄的絕對路徑
$config->setMigratePath(EASYSWOOLE_ROOT . '/Database/Migrates/');
// 遷移模板文件的絕對路徑
$config->setMigrateTemplate(EASYSWOOLE_ROOT . '/vendor/easyswoole/db-migrate/src/Resource/migrate._php');
// 遷移模板類的類名
$config->setMigrateTemplateClassName("MigratorClassName");
// 遷移模板類的表名
$config->setMigrateTemplateTableName("MigratorTableName");
// 遷移模板創(chuàng)建表的模板文件的絕對路徑
$config->setMigrateCreateTemplate(EASYSWOOLE_ROOT . '/vendor/easyswoole/db-migrate/src/Resource/migrate_create._php');
// 遷移模板修改表的模板文件的絕對路徑
$config->setMigrateAlterTemplate(EASYSWOOLE_ROOT . '/vendor/easyswoole/db-migrate/src/Resource/migrate_alter._php');
// 遷移模板刪除表的模板文件的絕對路徑
$config->setMigrateDropTemplate(EASYSWOOLE_ROOT . '/vendor/easyswoole/db-migrate/src/Resource/migrate_drop._php');
// 數(shù)據(jù)填充目錄絕對路徑
$config->setSeederPath(EASYSWOOLE_ROOT . '/Database/Seeds/');
// 數(shù)據(jù)填充模板類的類名
$config->setSeederTemplateClassName("SeederClassName");
// 數(shù)據(jù)填充模板文件的絕對路徑
$config->setSeederTemplate(EASYSWOOLE_ROOT . '/vendor/easyswoole/db-migrate/src/Resource/seeder._php');
// 逆向生成遷移文件的模板文件絕對路徑
$config->setMigrateGenerateTemplate(EASYSWOOLE_ROOT . '/vendor/easyswoole/db-migrate/src/Resource/migrate_generate._php');
// 逆向生成遷移模板SQL語句的DDL代碼塊
$config->setMigrateTemplateDdlSyntax("DDLSyntax");
\EasySwoole\DatabaseMigrate\MigrateManager::getInstance($config);

如果不自定義setMigratePathsetSeederPath配置項,所有遷移命令必須在項目根目錄(固定目錄)下執(zhí)行

執(zhí)行 php easyswoole.php migrate -h

php easyswoole.php migrate -h
Database migrate tool

Usage:
  easyswoole migrate ACTION [--opts ...]

Actions:
  create    Create the migration repository
  generate  Generate migration repository for existing tables
  run       Run all migrations
  rollback  Rollback the last database migration
  reset     Rollback all database migrations
  seed      Data filling tool
  status    Show the status of each migration

Options:
  -h, --help  Get help

create

創(chuàng)建一個遷移模板

當(dāng)需要新建表、修改表、刪除表時,create命令可以創(chuàng)建一個簡單的遷移模板文件

可用操作選項:

  • --alter:生成一個用于修改表的遷移模板
    • 示例:php easyswoole.php migrate create --alter=TableName
  • --create:生成一個用于新建表的遷移模板
    • 示例:php easyswoole.php migrate create --create=TableName
  • --drop:生成一個用于刪除表的遷移模板
    • 示例:php easyswoole.php migrate create --drop=TableName
  • --table:生成一個基礎(chǔ)的遷移模板
    • 示例:php easyswoole.php migrate create --table=TableName 等同于 php easyswoole.php migrate create TableName

操作會在遷移文件目錄生成一個類似文件名為2021_04_08_082914_user.php的文件,代碼類似如下,對應(yīng)操作使用的是 easyswoole/ddl 組件方法

<?php

use EasySwoole\DDL\Blueprint\Create\Table as CreateTable;
use EasySwoole\DDL\Blueprint\Alter\Table as AlterTable;
use EasySwoole\DDL\Blueprint\Drop\Table as DropTable;
use EasySwoole\DDL\DDLBuilder;
use EasySwoole\DDL\Enum\Character;
use EasySwoole\DDL\Enum\Engine;

/**
 * migrate create
 * Class User
 */
class User
{
    /**
     * migrate run
     * @return string
     */
    public function up()
    {
        return DDLBuilder::create('User',function (CreateTable $table){
            $table->setIfNotExists(true);
        });
    }

    /**
     * migrate rollback
     * @return string
     */
    public function down()
    {
        return DDLBuilder::dropIfExists('User');
    }
}

generate

對已存在的表生成適配當(dāng)前遷移工具的遷移模板

對于已經(jīng)啟動的項目沒有做版本遷移,generate命令可以對已存在的表逆向生成遷移文件

對已存在的表生成適配當(dāng)前遷移工具的遷移模板

可用操作選項:

  • --tables:指定要生成遷移模板的表,多個表用 ',' 隔開
    • 示例:php easyswoole.php migrate generate --tables=table1,table2
  • --ignore:指定要忽略生成遷移模板的表,多個表用 ',' 隔開
    • 示例:php easyswoole.php migrate generate --ignore=table1,table2

run

對所有未遷移的文件執(zhí)行遷移操作

rollback

回滾遷移記錄,默認(rèn)回滾上一次的遷移,指定操作相關(guān)參數(shù)可以從status命令中查看

可用操作選項:

  • --batch:指定要回滾的批次號
    • 示例:php easyswoole.php migrate rollback --batch=2
  • --id:指定要回滾的遷移ID
    • 示例:php easyswoole.php migrate rollback --id=2

reset

根據(jù)遷移表的記錄,一次性回滾所有遷移

seed

數(shù)據(jù)填充工具

不加操作項即為執(zhí)行填充數(shù)據(jù)操作,添加操作項即為創(chuàng)建填充模板

生成模板文件之后,方法內(nèi)的操作使用 easyswoole/mysqli 做數(shù)據(jù)填充,

可用操作選項:

  • --create:創(chuàng)建一個數(shù)據(jù)填充模板
    • 示例:php easyswoole.php migrate seed --create=UserTable
  • 直接填寫文件名或者類名,即為執(zhí)行指定填充文件(多個文件用 ',' 隔開)
    • 示例:php easyswoole.php migrate seed UserTable,UserInfoTable.php
  • 直接執(zhí)行seed命令為執(zhí)行數(shù)據(jù)填充目錄下所有填充操作
    • 示例:php easyswoole.php migrate seed

status

遷移狀態(tài)

展示成功遷移的數(shù)據(jù),即為遷移表內(nèi)的數(shù)據(jù)

主站蜘蛛池模板: 新中式家具,广东新中式家具,广州新中式家具,佛山新中式家具,顺德新中式家具,乐从新中式家具,新中式家具厂家直销--唐明雅居 | 中派康明斯发电机_玉柴发电机厂家_静音移动拖车发电机-深圳市斯坦福电力设备有限公司 | 新高度,萍乡市场调查研究公司,萍乡市场调研公司,萍乡第三方评估机构,萍乡神秘顾客暗访公司 | 昆山开曼流体系统科技有限公司 | 自动封箱机_纸箱封箱机_封箱机厂家-青岛百高包装器材有限公司 | 瑞安网站建设_网站制作_做网站找瑞安联创网络:专业网页制作、手机网站、SEO百度网站关键字优化 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 济南塑料袋,食品包装袋,复合塑料袋,方便袋-济南精美塑料包装厂 | 四通球阀_304真空阀_不锈钢五通球阀厂家-浙江壬丰阀门有限公司 | 频谱矢量网络分析仪_鼎阳数字示波器-苏州东伟元电子有限公司 | 重庆吊篮租赁-重庆脚手架租赁-重庆斌盛机械设备租赁有限公司 | 双相钢,双相不锈钢,2507双相不锈钢-海新双相钢| 油罐_双层油罐_双层油罐厂家|值得信赖-泰安晟鼎金属容器制造有限公司 | 陕西|青海|兰州|新疆|西宁|净化工程|西安甘肃|PCR实验室|无尘车间|净化车间-西安环亚净化工程 | 有源滤波器-高压无功补偿装置-高压无功补偿柜-10KV电容柜-安徽众升电力科技有限公司 | 河北安润防腐管业股份有限公司-远程供液管路_远距离供液管路_远程供液系统 | 啤酒厂家_啤酒代工厂_原浆啤酒厂家 - 山东十谷啤酒有限公司 | 瑞安网站建设_网站制作_做网站找瑞安联创网络:专业网页制作、手机网站、SEO百度网站关键字优化 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 双相钢,双相不锈钢,2507双相不锈钢-海新双相钢 | 山东金起起重机械有限公司[官网]-金桥银路悬臂吊,金起龙门吊,山东金起起重行吊,单梁起重机 | 真石漆设备-干粉砂浆生产线-保温砂浆机械-郑州屹成机械设备 | 叶片泵,液压电机,油泵电机,变量叶片泵,油压电机-广东俊泰液压科技有限公司 | 随车挖生产厂家_山东精久工程机械有限公司 | 疝灯试验箱-有风源淋雨-汽车盐雾室-无锡苏南试验设备有限公司 | 水热反应釜厂家_水热反应釜价格_水热合成反应釜批发-仪贝尔仪器 - 水热釜,水热反应釜,水热反应釜厂家,水热反应釜价格,水热反应釜型号,水热反应釜内衬,水热反应釜25ml,水热反应釜50ml,水热反应釜100ml,水热合成反应釜 | 青浦区摄像头安装/青浦区无线网络覆盖/青浦区网络调试公司/青浦区IT外包公司/金山区网络维护公司/金山区防火墙调试公司 | 湖南净声源环保科技有限公司是一家专业从事噪声治理和建筑声学设计生态环境综合治理服务的企业,专业从事株洲电梯隔音治理,湘潭中央空调降噪处理,衡阳邵阳冷却塔噪音治理,岳阳常德大型风机噪声隔音降噪,张家界空压机噪声治理,益阳配电房变压器噪声治理,专业郴州永州工厂企业车间噪声治理,怀化娄底专业机械设备减振降治理,武汉噪音治理隔音降噪公司,孝感噪音治理,立式球磨机的噪声控制,专业隔音降噪公司,、以及各类机械动力设备减振降噪噪声治理的公司,同时为客户提供咨询与解决方案 | 永磁电机,防爆电机,调速电机,永磁同步电机_河南华信电机股份有限公司 | 卫生间隔断-东莞卫生间隔断-东莞卫生间隔断厂家-公共卫生间隔断-东莞市康丰家居建材有限公司 | 盘扣租赁|盘扣架租赁|盘扣脚手架|盘扣脚手架租赁|盘扣式脚手架|盘扣式脚手架租赁-北京亚欧盟盘扣租赁有限公司 | 湖南一体化污水处理设备_二氧化氯发生器_一体化净水处理设备_消毒设备厂家-湖南东环环保科技有限公司 | 上海宽带安装-上海宽带办理-400电话-包月电话-靓号 | 实验室实验台-钢木实验台-实验室通风柜-实验室家具-苏州奥纳威 | 研线网-考研网-考研科目/时间/专业-研线网 | 武汉弹簧-污水厂弹簧-耐高温弹簧-武汉市伟锋弹簧厂 | 维启科技-创造科技的无限可能 | 上海维启信息技术有限公司 建筑仿真 BIM 虚拟现实 VR AR 顶岗实习 建筑智能模型 | 纠偏系统厂家-迈欣机械| 南京货架|仓库货架|货架公司|仓储货架工厂批发定做-南京苏正科技实业公司 | 南通众诚数控机床有限公司-液压机,剪板机,折弯机,卷板机,液压冲床,路灯杆设备专业制造商 | 转炉挡渣机构,转炉滑板挡渣,滑动水口生产厂家-河北瑞华冶金科技有限公司 | 兰舍硅藻泥 -- 深圳硅藻泥|深圳兰舍硅藻泥|深圳硅藻泥品牌|深圳硅藻泥价格|深圳硅藻泥厂家|深圳硅藻泥施工| | 济南手板_山东快速成型-山东嘉瑞杰机械科技有限公司 |