PHPackages                             jcbowen/mysql-helper-yii2 - 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. [Database &amp; ORM](/categories/database)
4. /
5. jcbowen/mysql-helper-yii2

ActiveYii2-extension[Database &amp; ORM](/categories/database)

jcbowen/mysql-helper-yii2
=========================

基于yii2的mysql维护助手，可以将表结构以数组方式储存下来，也可以轻松实现表的差异对比及生成对应的修复sql语句

v0.5.13(3mo ago)0601MITPHPPHP &gt;=7.2.0 &lt;8.0.0

Since Apr 3Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/jcbowen/mysql-helper-yii2)[ Packagist](https://packagist.org/packages/jcbowen/mysql-helper-yii2)[ RSS](/packages/jcbowen-mysql-helper-yii2/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (2)Versions (27)Used By (0)

MySQL Helper Yii2
=================

[](#mysql-helper-yii2)

[![Latest Stable Version](https://camo.githubusercontent.com/5287fd71c0796b6663fb1e124520c511412232c9366750cb77f0445ad11bb826/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6a63626f77656e2f6d7973716c2d68656c7065722d796969322e737667)](https://packagist.org/packages/jcbowen/mysql-helper-yii2)[![Total Downloads](https://camo.githubusercontent.com/d88616f5a4370160f3d5f1fdf96b9140e638726fff5dac541eeb6b1a0f1ee81b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6a63626f77656e2f6d7973716c2d68656c7065722d796969322e737667)](https://packagist.org/packages/jcbowen/mysql-helper-yii2)[![License](https://camo.githubusercontent.com/061a46e9e3e36b95fb4b6d430eb7d657f4126e2e3960a5c8eecb4f0ec5f70534/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6a63626f77656e2f6d7973716c2d68656c7065722d796969322e737667)](https://packagist.org/packages/jcbowen/mysql-helper-yii2)

基于 Yii2 的 MySQL 维护助手，提供数据库表结构管理、差异对比、修复 SQL 生成等功能。支持多模块项目的模型目录配置，适用于复杂的 Yii2 高级模板项目。

功能特性
----

[](#功能特性)

- 🔍 **数据库结构管理** - 获取、存储和比较数据库表结构
- 🔄 **差异检测** - 自动检测表结构变化并生成修复 SQL
- 📝 **SQL 生成** - 生成建表、修改、删除等 SQL 语句
- 🎯 **多目录支持** - 支持配置多个模型目录（适用于 Yii2 高级模板）
- 🛠️ **命令行工具** - 提供便捷的命令行操作接口
- 🔒 **向后兼容** - 保持与现有配置的兼容性

系统要求
----

[](#系统要求)

- PHP &gt;= 7.2.0
- Yii2 &gt;= 2.0.11
- jcbase-yii2 &gt;= 0.28.0

安装
--

[](#安装)

```
composer require jcbowen/mysql-helper-yii2
```

快速开始
----

[](#快速开始)

### 1. 基本使用

[](#1-基本使用)

```
use Jcbowen\MysqlHelperYii2\components\MysqlHelper;

// 获取数据库名称
$dbName = MysqlHelper::getDBName();

// 获取完整表名（自动处理表前缀）
$tableName = MysqlHelper::tableName('user');

// 获取表结构
$schema = MysqlHelper::getTableSchema('user');

// 获取所有表名
$tables = MysqlHelper::getAllTables();
```

### 2. 表结构比较和修复

[](#2-表结构比较和修复)

```
// 比较两个表结构
$diff = MysqlHelper::schemaCompare($table1Schema, $table2Schema);

// 生成修复 SQL
$fixSql = MysqlHelper::makeFixSql($currentSchema, $targetSchema, true);
```

### 3. 命令行工具

[](#3-命令行工具)

```
# 检查数据库表结构变化
php yii make/check

# 生成数据库基准文件
php yii make/db

# 使用非交互模式
php yii make/check --generate=y
php yii make/check --continues-if-empty=y
```

详细功能
----

[](#详细功能)

### MysqlHelper 类

[](#mysqlhelper-类)

#### 数据库操作

[](#数据库操作)

```
// 获取数据库名称
MysqlHelper::getDBName(?string $dsn = '', string $db = 'db'): string

// 获取所有表名
MysqlHelper::getAllTables(string $db = 'db'): array

// 获取完整表名（处理前缀）
MysqlHelper::tableName(string $tableName, string $db = 'db'): string
```

#### 表结构操作

[](#表结构操作)

```
// 获取表结构
MysqlHelper::getTableSchema(
    string $tableName = '',
    bool $getDefault = true,
    bool $getComment = true,
    array $options = []
): array

// 获取数据库所有表的序列化结构
MysqlHelper::getTableSerialize(string $dbname = '', string $db = 'db'): string

// 根据结构生成建表语句
MysqlHelper::makeCreateSql(array $schema): string

// 根据表名生成删除表语句
MysqlHelper::makeDropSql(string $tableName): string
```

#### 差异对比和修复

[](#差异对比和修复)

```
// 比较两张表的结构
MysqlHelper::schemaCompare(array $table1, array $table2): array

// 创建修复两张差异表的语句
MysqlHelper::makeFixSql(
    array $schema1,
    array $schema2,
    bool $strict = false
): array
```

#### 数据操作

[](#数据操作)

```
// 获取指定表的 insert 语句
MysqlHelper::tableInsertSql(
    string $tableName,
    array $options = [],
    $db = null
): array|false
```

### MakeController 类

[](#makecontroller-类)

#### 配置选项

[](#配置选项)

```
class MakeController extends \Jcbowen\MysqlHelperYii2\controllers\MakeController
{
    /**
     * 是否过滤没有数据模型的表
     */
    public $filterNoModelTable = false;

    /**
     * 不跟踪的表名
     */
    public $ignoreTables = ['migration', 'cache'];

    /**
     * 需要生成 insert 语句的表配置
     */
    public $insertTables = [
        'user' => [
            'truncate' => true, // 清空后插入
        ],
        'setting' => [
            'ignore' => true, // 存在就不插入
        ],
    ];

    /**
     * 数据库基准文件所在目录
     */
    public $dir = '@console/runtime/update/db';

    /**
     * 模型所在目录（支持多目录）
     */
    public $modelsDir = [
        '@common/models',      // 公共模型
        '@backend/models',     // 后台模型
        '@frontend/models',    // 前台模型
    ];
}
```

#### 多目录配置示例

[](#多目录配置示例)

```
// 单目录配置（向后兼容）
public $modelsDir = '@common/models';

// 多目录配置（新功能）
public $modelsDir = [
    '@common/models',
    '@backend/models',
    '@frontend/models',
    '@api/models',
];
```

使用场景
----

[](#使用场景)

### 1. 数据库结构版本管理

[](#1-数据库结构版本管理)

```
// 生成当前数据库结构的基准文件
$controller = new MakeController();
$controller->actionDb();

// 检查结构变化
$controller->actionCheck();
```

### 2. 多模块项目支持

[](#2-多模块项目支持)

```
// 配置多个模型目录
public $modelsDir = [
    '@common/models',      // 公共模型
    '@backend/models',     // 后台模型
    '@frontend/models',    // 前台模型
    '@api/models',         // API 模型
];
```

### 3. 自定义数据插入

[](#3-自定义数据插入)

```
// 配置需要生成 insert 语句的表
public $insertTables = [
    'router' => [
        'truncate' => true, // 清空后插入
    ],
    'vip' => [
        'ignore' => true, // 存在就不插入
        'getInsertDataQuery' => function ($query) {
            return $query->where(['status' => 1]);
        }
    ],
];
```

命令行选项
-----

[](#命令行选项)

### make/check 命令

[](#makecheck-命令)

```
# 基本检查
php yii make/check

# 非交互模式
php yii make/check --generate=y --continues-if-empty=y

# 简写形式
php yii make/check -g y -c y
```

### make/db 命令

[](#makedb-命令)

```
# 生成数据库基准文件
php yii make/db
```

注意事项
----

[](#注意事项)

1. **表前缀处理**：工具会自动处理 Yii2 的表前缀配置
2. **字段默认值**：已有字段如果之前被设置为 NULL，后续在设置基准表时，一定不要设置为 NOT NULL，否则会报错
3. **目录验证**：多目录配置会自动验证目录存在性，不存在的目录会被跳过并显示警告
4. **性能考虑**：大量目录可能影响扫描性能，建议合理配置

错误处理
----

[](#错误处理)

当遇到目录不存在时，会显示类似以下的警告信息：

```
模型目录不存在: @invalid/models (/path/to/invalid/models)

```

该警告不会中断程序执行，会继续扫描其他有效目录。

示例和文档
-----

[](#示例和文档)

- [基本使用示例](examples/basic_usage.php) - PHP 代码使用示例
- [命令行使用示例](examples/console_usage.md) - 命令行工具使用指南
- [项目功能概览](%E9%A1%B9%E7%9B%AE%E5%8A%9F%E8%83%BD%E6%A6%82%E8%A7%88.md) - 详细的功能和架构说明

贡献
--

[](#贡献)

欢迎提交 Issue 和 Pull Request 来改进这个项目。

许可证
---

[](#许可证)

本项目基于 MIT 许可证开源。

作者
--

[](#作者)

- **Bowen** -

更新日志
----

[](#更新日志)

### v0.x-dev

[](#v0x-dev)

- ✨ 新增多模型目录支持功能
- 🔧 优化表结构扫描逻辑
- 📝 完善文档和注释
- 🐛 修复向后兼容性问题
- 📚 新增详细的使用示例和文档

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance78

Regular maintenance activity

Popularity9

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~55 days

Recently: every ~111 days

Total

26

Last Release

118d ago

PHP version history (2 changes)v0.0.7PHP &gt;=7.1.0

v0.3.5PHP &gt;=7.2.0 &lt;8.0.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/d3a2de6e908ea444f4aad0e0c378e46396386097bade8a1fe009998609d75d2e?d=identicon)[Bowen](/maintainers/Bowen)

---

Top Contributors

[![jcbowen](https://avatars.githubusercontent.com/u/46322341?v=4)](https://github.com/jcbowen "jcbowen (64 commits)")

---

Tags

yii2jcbowenMysqlHelperYii2Mysql Helper

### Embed Badge

![Health badge](/badges/jcbowen-mysql-helper-yii2/health.svg)

```
[![Health](https://phpackages.com/badges/jcbowen-mysql-helper-yii2/health.svg)](https://phpackages.com/packages/jcbowen-mysql-helper-yii2)
```

###  Alternatives

[voskobovich/yii2-linker-behavior

This behavior makes it easy to maintain many-to-many and one-to-many relations in your ActiveRecord models.

80319.0k9](/packages/voskobovich-yii2-linker-behavior)[yii2tech/illuminate

Yii2 to Laravel Migration Package

11315.1k](/packages/yii2tech-illuminate)[mootensai/yii2-relation-trait

Yii 2 Models load with relation, &amp; transaction save with relation

47220.3k9](/packages/mootensai-yii2-relation-trait)[nhkey/yii2-activerecord-history

Storage history of changes to ActiveRecord

46143.4k1](/packages/nhkey-yii2-activerecord-history)[dmstr/yii2-db

Database extensions

19618.8k6](/packages/dmstr-yii2-db)[spanjeta/yii2-backup

Database Backup and Restore functionality

285.0k1](/packages/spanjeta-yii2-backup)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
