企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 根据mysql表增删改查自动生成 当已经有数据库了,需要开发增删改查,还要去撸代码? 作为喜欢偷懒的我,当然不可能写增删改查,这辈子都不可能,我要自动生成! 一觉醒来,上帝听到我的呼唤,于是有了根据mysql表增删改查自动生成增删改查 ## 1. 部署: 在 config/console.php 文件增加 ``` // 指令定义 'commands' => [ \suframe\thinkAdmin\command\thinkAdminCURD::class ], ``` ## 2. 使用 命令: ``` php think curd 数据库 php think curd news -c controller/news/Manager 指定控制器路径(基于app/的相对路径) # 多应用模式,生成应用下的控制器, demo为你自己app_name php think curd news -a demo -m -f ``` 参数: - -c --controller 指定控制器 - -a --app 指定应用 - -m --menu 生成菜单及权限(默认不生成 - -f --force 强制生成(覆盖原来生成的,已生成的菜单不会覆盖) 由于生成增删改查表单和列表需要一些中文支撑,因为字段是英文的,思考了很久,决定通过表注释自动生成 1. 表注释中: [name] , 表注释中的name 用于显示菜单和整个栏目的名称,没有注释的表不予生成 2. 表字段注释, 开头用[name], 标识字段, [_name] 表示非公开字段,即不在列表显示,在表单显示,没有注释的字段不予生成 3. 表的类型决定了表单的生成方式,date,datetime相关类型默认日期组件,int等默认数字组件,enum默认单选框 4. 特殊字段类型,通过注释中@分割[name@type] 注释标识 - 单图: [name@image] - 多图: [name@images] 需要序列化存储 - 文件: [name@file] - 多文件: [name@files] 需要序列化存储 - switch: [name@switch] ,默认0,1, - 滑块: [name@slider], 默认1-100 - 滑块多选: [name@sliderRange], 默认1-100 - 颜色选择: [name@color] - 评分: [name@rate] - 单选: [name@radio] 由于多选数据来源不固定,所有默认是空的,需要生成后自己去配置数据 - 多选: [name@checkbox] 由于多选数据来源不固定,所有默认是空的,需要生成后自己去配置数据 - 级联: [name@cascader] 由于级联数据来源不固定,所有默认是空的,需要生成后自己去配置数据 - 地区: [name@city] 省市二级联动 - 地区: [name@cityArea] 省市区三级联动 - 日期: [name@year] ,[name@month] ,[name@dateRange] ,[name@dates] - 富文本: [content@editor] 用的ckeditor > 此工具只是帮助你处理重复工作,更细化的优化需要你自己去跳转生成的表单和表格,达到更好的展示效果 > 地区默认 https://unpkg.com/@form-create/data@1.0.0/dist/province_city_area.js,有兴趣的可以生成自己的然后替换 > 表单组件使用的http://php.form-create.com/docs/2.0/element-ui/col, 配置可以根据这个文档修改生成后的文件 > 有些组件是多选,需要自己处理模型里面字段的序列化存储 学会了吗?赶紧去告诉你老板,你可以10分钟生成一个现有业务的后台吧~~升职加薪赢取白富美! ***** ## 3. 示例 ### 3.1 新建表 ``` CREATE TABLE `news` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '[ID]', `name` varchar(128) NOT NULL COMMENT '[标题]', `image` varchar(255) DEFAULT NULL COMMENT '[封面@image]', `cid` int(11) DEFAULT NULL COMMENT '[分类@cascader]', `publish_time` datetime DEFAULT NULL COMMENT '[发布日期]', `content` text DEFAULT NULL COMMENT '[新闻内容@editor]', `created_time` timestamp NULL DEFAULT NULL COMMENT '时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='[新闻]'; ``` 详细可查看表定义规范 ### 3.2 进入命令行,网站根目录,运行命令 ``` # 生成模型 php think make:model News # 生成curl php think curd news ``` 此命令会生成控制器,表格文件,表单文件和数据库新增一个菜单 具体文件如下: ``` app/controller/News.php ui/table/NewsTable.php ui/form/NewsForm.php ``` 刷新后台,会多个菜单。点进去就是你刚刚生成的。此时我们只需要按照设计,优化下表单和表格即可