PHPackages                             easyswoole/db-migrate - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. easyswoole/db-migrate

ActiveLibrary[Framework](/categories/framework)

easyswoole/db-migrate
=====================

An efficient swoole framework

1.0.1(5y ago)25.9k↓100%2Apache-2.0PHPPHP &gt;=7.1.0

Since Apr 19Pushed 4y agoCompare

[ Source](https://github.com/easy-swoole/database-migrate)[ Packagist](https://packagist.org/packages/easyswoole/db-migrate)[ Docs](https://www.easyswoole.com/)[ RSS](/packages/easyswoole-db-migrate/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (8)Versions (3)Used By (0)

db-migrate
==========

[](#db-migrate)

参照Laravel开发的easyswoole数据库版本迁移工具

安装
--

[](#安装)

```
composer require easyswoole/db-migrate

```

使用方法
----

[](#使用方法)

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

> bootstrap.php

```
\EasySwoole\Command\CommandManager::getInstance()->addCommand(new \EasySwoole\DatabaseMigrate\MigrateCommand());
$config = new \EasySwoole\DatabaseMigrate\Config\Config();
// 数据地址
$config->setHost("127.0.0.1");
// 数据库端口
$config->setPort(3306);
// 数据库用户名
$config->setUser("root");
// 数据库密码
$config->setPassword("123456");
// 数据库库名
$config->setDatabase("easyswoole");
// 数据库超时时长
$config->setTimeout(5.0);
// 数据库字符集
$config->setCharset("utf8mb4");
//===========可选配置修改项，以下参数均有默认值===========
// 迁移记录的数据库表名
$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");
// 迁移模板创建表的模板文件的绝对路径
$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');
// 数据填充目录绝对路径
$config->setSeederPath(EASYSWOOLE_ROOT . '/Database/Seeds/');
// 数据填充模板类的类名
$config->setSeederTemplateClassName("SeederClassName");
// 数据填充模板文件的绝对路径
$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);
```

:::tip
如果不自定义`setMigratePath`、`setSeederPath`配置项，所有迁移命令必须在项目根目录(固定目录)下执行
:::

执行 `php easyswoole migrate -h`

```
php easyswoole 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

[](#create)

> 创建一个迁移模板
>
> 当需要新建表、修改表、删除表时，create命令可以创建一个简单的迁移模板文件

可用操作选项：

- `--alter`：生成一个用于修改表的迁移模板
    - 示例：`php easyswoole migrate create --alter=TableName`
- `--create`：生成一个用于新建表的迁移模板
    - 示例：`php easyswoole migrate create --create=TableName`
- `--drop`：生成一个用于删除表的迁移模板
    - 示例：`php easyswoole migrate create --drop=TableName`
- `--table`：生成一个基础的迁移模板
    - 示例：`php easyswoole migrate create --table=TableName` 等同于 `php easyswoole migrate create TableName`

操作会在迁移文件目录生成一个类似文件名为`2021_04_08_082914_user.php`的文件，代码类似如下，对应操作使用的是 [easyswoole/ddl](https://github.com/easy-swoole/ddl) 组件方法

```
