ulthon_admin
欢迎 目录和文件规范 系统架构 命名规范 php-cs-fixer public/static目录规范 app/common目录规范 数据库规范 CURD 生成方案 CURD命令行 SCHEME机制 表结构 数据库迁移代码 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

1. 核心理念

Ulthon Admin 引入了 Scheme 层(位于 app/admin/scheme/),作为数据库结构的“代码化真理”。
生成 CURD 代码时,系统会强制检查 数据库实际结构Scheme 代码定义 是否完全一致。如果不一致,为了防止代码逻辑与数据库脱节,CURD 生成将被拒绝。

2. 常见报错与解决

报错:CURD 生成已拒绝:数据库结构与 Scheme 不一致

当你看到类似如下报错时:

  1. CURD 生成已拒绝:数据库结构与 Scheme 不一致(ul_test_goods
  2. 字段类型不一致:id DB=int unsigned Scheme=int
  3. 字段注释不一致:title DB=标题 Scheme=标题1

原因

  • 你手动修改了数据库(如 Navicat 改了字段),但没有更新 Scheme 文件。
  • 或者你手动修改了 Scheme 文件,但没有同步到数据库。

解决方法

场景 A:我修改了数据库,想同步到 Scheme(推荐)

如果你习惯使用数据库工具设计表结构,请在修改完成后执行:

  1. # 读取数据库结构,覆盖/生成对应的 Scheme 文件
  2. php think scheme:make -t {table_name}
  3. # 示例
  4. php think scheme:make -t test_goods

场景 B:我修改了 Scheme 代码,想同步到数据库

如果你习惯直接写 PHP 代码定义表结构,请在修改完成后执行:

  1. # 将 Scheme 代码的变更应用到数据库(会自动备份原表)
  2. php think scheme:sync

3. 标准开发流程

第一步:设计表结构

推荐使用数据库管理工具(如 Navicat)创建或修改表结构。确保字段类型、注释、索引都设置正确。
注意:字段注释中可以定义组件类型,格式为 注释内容 {组件类型} (选项1:值1, 选项2:值2)

第二步:生成/更新 Scheme

执行命令,将数据库变动固化为代码:

  1. php think scheme:make -t test_goods

此时系统会自动处理字段类型兼容性(如忽略 int(11) 的显示宽度)和注释格式化。

第三步:生成 CURD

确保第二步无误后,执行:

  1. php think curd -t test_goods

此时系统会校验通过,并生成控制器、模型、视图和 JS 文件。

4. 高级技巧

组件定义语法

在数据库字段注释中,可以使用特定语法直接定义前端组件:

  • 格式字段含义 {组件类型} (key:value, ...)
  • 示例
    • 状态 {select} (1:正常, 0:禁用) -> 生成下拉框
    • 头像 {image} -> 生成单图上传
    • 内容 {editor} -> 生成富文本编辑器

强制覆盖

如果生成的 CURD 代码不满意,可以随时重新生成(会覆盖 app/ 下的对应文件,请谨慎):

  1. php think curd -t test_goods -f

临时预览

不确定生成效果时,可以生成到临时目录查看:

  1. php think curd -t test_goods -r

文件将生成在 runtime/source/ 目录下。

原文标题:CURD 命令使用指南与 Scheme 机制详解

原文文档:ulthon_admin

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

原文平台:奥宏文档

2.x