# 根据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
```
刷新后台,会多个菜单。点进去就是你刚刚生成的。此时我们只需要按照设计,优化下表单和表格即可