ulthon_admin
欢迎 目录和文件规范 系统架构 命名规范 php-cs-fixer public/static目录规范 app/common目录规范 数据库规范 CURD 生成方案 命令行 表结构 数据库迁移代码 scheme机制 最佳实践 数据库自动缓存 视图 包含文件 后台兼容接口请求 后台菜单导入导出 权限的用法 table数据表格 cols operat _if auth titleField field tab edit selectList valueParser trueHide fieldFormat templet defaultValue search相关 time defaultSearchValue size defaultToolbar init formFullScreen toobar limit modifyReload 控制器 CURD方法 导出 控制器通用验证 dataBrage向js传递参数 组件控件 select 下拉菜单option拼接 lay-submit paste-text粘贴 multiple-columns editor data-upload上传 tag-input标签输入 property-input动态字段输入 data-date时间控件参数 table-data列表选择器 city-picker城市选择器 copy-text 全局监听组件 data-request data-open 内置定时器 并发模式 重置密码 系统配置 PHP助手函数 sysconfig JS助手函数 checkMobile empty open 弹框 叠加loading getDataBrage getQueryVariable 扩展机制 事件扩展 实现事件 执行事件 事件列表 AdminLayoutRequireAfter LoadMigrationFiles AdminLoginIndex AdminLoginForget AdminLoginType AdminMenuTab AdminLayoutRequireBefore 自动更新 性能优化 精简代码 关闭数据库日志驱动 皮肤 正常 科幻 其他 切换模块时直接切换内容 关闭上传文件注入检测 代码编译原理 接入workerman和命令参数 升级TP6.1 Request的默认过滤 异步引入全局script 线上安装脚本 兼容PHP8.1

Ulthon Admin Scheme 机制详解

1. 功能简介

Scheme 机制是 Ulthon Admin 引入的一种数据库即代码 (Database as Code) 解决方案。它通过 PHP 类(Scheme 类)来定义和管理数据库表结构,实现了数据库结构与代码的双向同步。这一机制极大地简化了团队协作中的数据库版本控制、迁移和多环境部署问题。

2. 核心特性

  • 双向同步:
    • DB to Code: 支持从现有数据库表反向生成 PHP Scheme 类,保留字段注释及特殊配置(如 {radio} 组件标识)。
    • Code to DB: 支持通过修改 PHP 类来变更数据库表结构。
  • 安全变更: 在执行同步(Code to DB)时,系统会自动将原表重命名备份(格式:前缀_backup_时间_原表名),确保数据绝不丢失。
  • 属性驱动: 使用 PHP 8 Attributes(注解)定义表和字段属性,语法简洁直观。
  • 多库适配: 底层自动适配 MySQL 和 SQLite 语法,一套代码多处运行。

3. 目录结构

  • 业务定义层 (app/admin/scheme/):
    • 存放具体业务表的 Scheme 类文件(如 TestGoods.php)。
    • 这是开发者日常工作的主要目录
  • 应用接入层 (app/common/scheme/):
    • 提供基类继承,允许开发者扩展底层逻辑。
  • 核心驱动层 (extend/base/common/scheme/):
    • 框架底层实现,包含属性解析、SQL 生成器等核心逻辑(严禁修改)。

4. 核心命令详解

4.1 反向生成 (DB -> Code)
读取数据库中的表结构,生成对应的 PHP Scheme 类文件。

  1. # 生成指定表 (推荐)
  2. php think scheme:make -t test_goods
  3. # 强制覆盖已存在的文件
  4. php think scheme:make -t test_goods -f

4.2 正向同步 (Code -> DB)
根据 PHP Scheme 类的定义,更新数据库表结构。

  1. # 同步所有 Scheme 定义到数据库
  2. php think scheme:sync
  3. # 流程说明:
  4. # 1. 扫描 app/admin/scheme/ 下的所有类
  5. # 2. 检查数据库中是否存在同名表
  6. # 3. 如果存在,将其重命名为备份表 (例如 ul_backup_20250109_ul_test_goods)
  7. # 4. 根据 PHP 类创建新表
  8. # 5. (可选) 尝试从备份表恢复数据

5. 最佳实践流程

  1. 设计初期: 可以先在数据库工具中快速建表,确立字段结构。
  2. 固化结构: 使用 php think scheme:make 将表结构固化为代码并提交到 Git。
  3. 迭代开发: 后续修改字段时,直接修改 PHP Scheme 类,然后运行 php think scheme:sync 应用变更。
  4. 团队协作: 其他成员拉取代码后,运行 scheme:sync 即可获得最新的数据库结构,无需传递 SQL 文件。

原文标题:scheme机制

原文文档:ulthon_admin

原文地址:https://doc.ulthon.com/read/augushong/ulthon_admin/6960feafc20bd/zh-cn/2.x.html

原文平台:奥宏文档

2.x