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 不一致
当你看到类似如下报错时:
CURD 生成已拒绝:数据库结构与 Scheme 不一致(ul_test_goods)字段类型不一致:id DB=int unsigned Scheme=int字段注释不一致:title DB=标题 Scheme=标题1
原因:
- 你手动修改了数据库(如 Navicat 改了字段),但没有更新 Scheme 文件。
- 或者你手动修改了 Scheme 文件,但没有同步到数据库。
解决方法:
场景 A:我修改了数据库,想同步到 Scheme(推荐)
如果你习惯使用数据库工具设计表结构,请在修改完成后执行:
# 读取数据库结构,覆盖/生成对应的 Scheme 文件php think scheme:make -t {table_name}# 示例php think scheme:make -t test_goods
场景 B:我修改了 Scheme 代码,想同步到数据库
如果你习惯直接写 PHP 代码定义表结构,请在修改完成后执行:
# 将 Scheme 代码的变更应用到数据库(会自动备份原表)php think scheme:sync
3. 标准开发流程
第一步:设计表结构
推荐使用数据库管理工具(如 Navicat)创建或修改表结构。确保字段类型、注释、索引都设置正确。
注意:字段注释中可以定义组件类型,格式为 注释内容 {组件类型} (选项1:值1, 选项2:值2)。
第二步:生成/更新 Scheme
执行命令,将数据库变动固化为代码:
php think scheme:make -t test_goods
此时系统会自动处理字段类型兼容性(如忽略 int(11) 的显示宽度)和注释格式化。
第三步:生成 CURD
确保第二步无误后,执行:
php think curd -t test_goods
此时系统会校验通过,并生成控制器、模型、视图和 JS 文件。
4. 高级技巧
组件定义语法
在数据库字段注释中,可以使用特定语法直接定义前端组件:
- 格式:
字段含义 {组件类型} (key:value, ...) - 示例:
状态 {select} (1:正常, 0:禁用)-> 生成下拉框头像 {image}-> 生成单图上传内容 {editor}-> 生成富文本编辑器
强制覆盖
如果生成的 CURD 代码不满意,可以随时重新生成(会覆盖 app/ 下的对应文件,请谨慎):
php think curd -t test_goods -f
临时预览
不确定生成效果时,可以生成到临时目录查看:
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