## 一键生成CRUD
在YznCMS中可以快速的一键生成CRUD(版本1.3.3+新增),自动生成后台的控制器、模型、视图、JS、菜单、回收站等,同时也支持使用`在线命令插件`实现本功能。
### 注意事项:
1. 请确保你设计的表有且只有一个`主键`,不支持`复合主键`。
2. 请确保php所在的目录已经加入到系统环境变量,否则会提示找不到该命令。
下面以`yzn_test`数据表为例,打开命令行控制台进入到你的站点根目录,也就是`think`文件所在的目录,进行执行命令。
### 常用命令
~~~php
//生成yzn_test表的CRUD
php think crud -t test
//生成yzn_test表的CRUD且一键生成菜单
php think crud -t test -u 1
//删除yzn_test表生成的CRUD
php think crud -t test -d 1
//生成yzn_test表的CRUD且控制器生成在二级目录下
php think crud -t test -c mydir/test
//删除yzn_test表生成的二级目录的CRUD
php think crud -t test -c mydir/test -d 1
//生成yzn_test_log表的CRUD且生成对应的控制器为testlog
php think crud -t test_log -c testlog
//生成yzn_test表的CRUD且对应的模型名为testmodel
php think crud -t test -m testmodel
//生成yzn_test表的CRUD且生成关联模型category,外链为category_id,关联表主键为id
php think crud -t test -r category -k category_id -p id
//生成yzn_test表的CRUD且所有以list或data结尾的字段都生成复选框
php think crud -t test --setcheckboxsuffix=list --setcheckboxsuffix=data
//生成yzn_test表的CRUD且所有以image和img结尾的字段都生成图片上传组件
php think crud -t test --imagefield=image --imagefield=img
//关联多个表,参数传递时请按顺序依次传递,支持以下几个参数relation/relationmodel/relationforeignkey/relationprimarykey/relationfields/relationmode
php think crud -t test --relation=category --relation=admin --relationforeignkey=category_id --relationforeignkey=admin_id
//生成v_phealth_db2数据库下的yzn_test表的CRUD
php think crud -t test --db=v_phealth_db2
~~~
### 参数介绍
~~~sql
-t, --table=TABLE [必填]表名,带不带表前缀均可
-c, --controller[=CONTROLLER] [可选]生成的控制器名,默认根据表名进行自动解析
-m, --model[=MODEL] [可选]生成的模型名,默认根据表名进行自动解析
-i, --fields[=FIELDS] [可选]生成的数据列表中可见的字段,默认是全部
-f, --force[=FORCE] [可选]是否覆盖模式,,如果目标位置已经有对应的控制器或模型会提示
-l, --local[=LOCAL] [可选]是否本地模型,默认1,置为0时,模型将生成在common模块下
-r, --relation[=RELATION] [可选]关联模型表名,带不带表前缀均可
-e, --relationmodel[=RELATIONMODEL] [可选]生成的关联模型名,默认根据表名进行自动解析
-k, --relationforeignkey[=RELATIONFOREIGNKEY] [可选]表外键,默认会识别为使用 模型_id 名称
-p, --relationprimarykey[=RELATIONPRIMARYKEY] [可选]关联模型表主键,默认会自动识别
-s, --relationfields[=RELATIONFIELDS] [可选]关联模型表显示的字段,默认是全部
-o, --relationmode[=RELATIONMODE] [可选]关联模型,hasone/belongsto/hasmany [default: "belongsto"]
-d, --delete[=DELETE] [可选]删除模式,将删除之前使用CRUD命令生成的相关文件
-u, --menu[=MENU] [可选]菜单模式,生成CRUD后将继续一键生成菜单
--db[=key] [可选]多数据库支持(参数为tp5.1中配置的数据库key 在config\database.php添加数据库配置信息)
--setcheckboxsuffix[=SETCHECKBOXSUFFIX] [可选]自动生成复选框的字段后缀
--enumradiosuffix[=ENUMRADIOSUFFIX] [可选]自动生成单选框的字段后缀
--imagefield[=IMAGEFIELD] [可选]自动生成图片上传组件的字段后缀
--filefield[=FILEFIELD] [可选]自动生成文件上传组件的字段后缀
--intdatesuffix[=INTDATESUFFIX] [可选]自动生成日期组件的字段后缀
--switchsuffix[=SWITCHSUFFIX] [可选]自动生成可选组件的字段后缀
--citysuffix[=CITYSUFFIX] [可选]自动生成城市选择组件的字段后缀
--selectpagesuffix[=SELECTPAGESUFFIX] [可选]自动生成Selectpage组件的字段后缀
--ignorefields[=IGNOREFIELDS] [可选]排除的字段
--editorclass[=EDITORCLASS] [可选]自动生成富文本组件的字段后缀
--headingfilterfield[=HEADINGFILTERFIELD] [可选]自动生成筛选过滤选项卡的字段,默认是status字段
--sortfield[=SORTFIELD] [可选]排序字段
~~~
# 数据表供参考
> **表注释**和**字段注释**请务必都填写,以便生成对应字段中文,部分特殊字段需要参考下表的字段注释规则
```
CREATE TABLE `yzn_test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`user_id` int(10) DEFAULT '0' COMMENT '会员ID',
`admin_id` int(10) unsigned DEFAULT '0' COMMENT '管理员ID(单选)',
`admin_ids` varchar(100) DEFAULT NULL COMMENT '管理员ID(多选)',
`tags` varchar(255) DEFAULT '' COMMENT '标签',
`week` enum('monday','tuesday','wednesday') DEFAULT NULL COMMENT '星期(单选):monday=星期一,tuesday=星期二,wednesday=星期三',
`flag` set('hot','index','recommend') DEFAULT '' COMMENT '标志(多选):hot=热门,index=首页,recommend=推荐',
`genderdata` enum('male','female') DEFAULT 'male' COMMENT '性别(单选):male=男,female=女',
`hobbydata` set('music','reading','swimming') DEFAULT NULL COMMENT '爱好(多选):music=音乐,reading=读书,swimming=游泳',
`title` varchar(100) DEFAULT '' COMMENT '标题',
`content` text COMMENT '内容',
`image` varchar(100) DEFAULT '' COMMENT '图片',
`images` varchar(1500) DEFAULT '' COMMENT '图片组',
`attachfile` varchar(100) DEFAULT '' COMMENT '附件',
`city` varchar(100) DEFAULT '' COMMENT '省市',
`json` varchar(255) DEFAULT NULL COMMENT '配置:key=名称,value=值',
`multiplejson` varchar(1500) DEFAULT '' COMMENT '二维数组:title=标题,intro=介绍,author=作者,age=年龄',
`price` decimal(10,2) unsigned DEFAULT '0.00' COMMENT '价格',
`views` int(10) unsigned DEFAULT '0' COMMENT '点击',
`workrange` varchar(100) DEFAULT '' COMMENT '时间区间',
`startdate` date DEFAULT NULL COMMENT '开始日期',
`activitytime` datetime DEFAULT NULL COMMENT '活动时间(datetime)',
`year` year(4) DEFAULT NULL COMMENT '年',
`times` time DEFAULT NULL COMMENT '时间',
`refresh_time` bigint(16) DEFAULT NULL COMMENT '刷新时间',
`create_time` bigint(16) DEFAULT NULL COMMENT '创建时间',
`update_time` bigint(16) DEFAULT NULL COMMENT '更新时间',
`delete_time` bigint(16) DEFAULT NULL COMMENT '删除时间',
`weigh` int(10) DEFAULT '0' COMMENT '权重',
`switch` tinyint(1) DEFAULT '0' COMMENT '开关',
`status` enum('normal','hidden') DEFAULT 'normal' COMMENT '状态:hidden=禁用,normal=正常',
`state` enum('0','1','2') DEFAULT '1' COMMENT '状态值:0=禁用,1=正常,2=推荐',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试表';
```
## 根据字段类型
| 类型 | 备注 | 类型说明 |
| --- | --- | --- |
| int | 整型 | 自动生成type为number的文本框,步长为1 |
| enum | 枚举型 | 自动生成单选下拉列表框 |
| set | set型 | 自动生成多选下拉列表框 |
| float | 浮点型 | 自动生成type为number的文本框,步长根据小数点位数生成 |
| text | 文本型 | 自动生成textarea文本框 |
| datetime | 日期时间 | 自动生成日期时间的组件 |
| date | 日期型 | 自动生成日期型的组件 |
| timestamp | 时间戳 | 自动生成日期时间的组件 |
| varchar | 字符串 | 自动生成textarea文本框|
## 特殊字段
| 字段 | 字段名称 | 字段类型 | 字段说明 |
| --- | --- | --- | --- |
| user_id | 会员ID | int | 将生成选择会员的SelectPage组件,单选 |
| user_ids | 会员ID集合 | varchar | 将生成选择会员的SelectPage组件,多选 |
| admin_id | 管理员ID | int | 将生成选择管理员的SelectPage组件 |
| admin_ids | 管理员ID集合 | varchar | 将生成选择管理员的SelectPage组件,多选 |
| weigh | 权重 | int | 后台的排序字段,如果存在该字段将出现排序按钮 |
| create_time | 创建时间 | int/bigint/datetime | 记录添加时间字段,不需要手动维护 |
| update_time | 更新时间 | int/bigint/datetime | 记录更新时间的字段,不需要手动维护 |
| delete_time | 删除时间 | int/bigint/datetime | 记录删除时间的字段,不需要手动维护,如果存在此字段将会生成回收站功能,字段默认值务必为`null` |
| status | 状态字段 | enum | 列表筛选字段 |
## 以特殊字符结尾的规则
| 结尾字符 | 示例 | 类型要求 | 字段说明 |
| --- | --- | --- | --- |
| time | refreshtime | bigint/datetime | 识别为日期时间型数据,自动创建选择时间的组件 |
| image | smallimage | varchar | 识别为图片文件,自动生成可上传图片的组件,单图 |
| images | smallimages | varchar | 识别为图片文件,自动生成可上传图片的组件,多图 |
| file | attachfile | varchar | 识别为普通文件,自动生成可上传文件的组件,单文件 |
| files | attachfiles | varchar | 识别为普通文件,自动生成可上传文件的组件,多文件 |
| avatar | miniavatar | varchar | 识别为头像,自动生成可上传图片的组件,单图 |
| avatars | miniavatars | varchar | 识别为头像,自动生成可上传图片的组件,多图 |
| content | maincontent | text/mediumtext/longtext | 识别为内容 |
| \_id | user\_id | int/varchar | 识别为关联字段,自动生成可自动完成的文本框,单选 |
| \_ids | user\_ids | varchar | 识别为关联字段,自动生成可自动完成的文本框,多选 |
| list | timelist | enum | 识别为列表字段,自动生成单选下拉列表 |
| list | timelist | set | 识别为列表字段,自动生成多选下拉列表 |
| data | hobbydata | enum | 识别为选项字段,自动生成单选框 |
| data | hobbydata | set | 识别为选项字段,自动生成复选框 |
| json | configjson | varchar | 识别为键值组件,自动生成键值录入组件 |
| switch | siteswitch | tinyint | 识别为开关字段,自动生成开关组件,默认值`1`为`ON`,`0`为`OFF`|
| range | daterange | varchar | 识别为时间区间组件,自动生成时间区间组件 |
| tag | articletag | varchar | 识别为Tagsinput,自动生成标签输入组件 |
| tags | articletags | varchar | 识别为Tagsinput,自动生成标签输入组件 |
> 温馨提示:以list或data结尾的字段必须搭配enum或set类型才起作用
> 如果为多图或多列表字段,请务必确保字段长度足够
- 序言
- 使用条款
- 安装
- 环境搭建
- 目录结构
- 钩子和行为
- 表单生成
- 数据限制
- 命令行
- 一键生成CRUD
- 一键生成菜单
- 一键安装
- 系统配置
- 常规字段
- 特殊字段1:下拉框(高级)字段
- 特殊字段2:自定义字段
- 特殊字段3:自定义多图片
- 系统函数/类
- 函数说明
- cache - 缓存管理
- thumb - 获取缩略图
- str_cut - 字符截取
- 邮箱/短信
- 插件使用说明
- cms内容管理【cms】
- 变量/常量
- 函数
- getCategory - 栏目获取
- catpos - 面包屑
- seo - 生成SEO
- buildCatUrl - 生成栏目URL
- buildContentUrl - 创建内容链接
- 标签
- 公共参数
- 栏目标签
- 列表标签
- 上一页标签
- 下一页标签
- Tags标签
- 万能标签
- 原生标签
- 搜索页
- 筛选页
- 内容详情页
- 模板
- 技巧/问题
- 将CMS路由设置更简洁
- 外链和单页如何增加列表类型的子栏目
- 如何合理设置SEO
- 实现电脑和手机模板分离
- 敏感词检测
- 栏目授权不全
- 内容页分页
- 分页伪静态
- tag标签不支持特殊字符
- 部分虚拟主机tags页面报错
- 循环表格
- 二级目录搭建知识点
- 阅读收费
- 会员插件【member】
- 介绍
- 自定义表单【formguide】
- 调用方式
- 模板
- 支付插件【pay】
- 支付宝
- 微信
- 常见问题
- 接口文档【apidoc】
- 简介
- 配置
- 使用
- 万能采集【collection】
- 采集列表规则
- 采集内容规则
- 关于图片
- 案例一:采集yzncms论坛
- cms小程序【wxcms】(重构已下架)
- 前端
- H5设计【diywap】
- 返回顶部【returntop】
- 通用数据导出【dataoutput】
- 多通道短信【easysms】
- 塞邮邮箱【saiyouems】
- 第三方登录【synclogin】
- 中文分词【getwords】
- QQ客服【kefu】
- 地图位置【address】
- 智能人机验证【vaptcha】
- 行为验证码【ajcaptcha】
- 数据转换【v9toyzn】
- 数据转换【dedetoyzn】
- 百度收录查询【baidurecord】
- 蜘蛛访问统计【spider】
- editormd编辑器【editormd】
- 敏感词检测【sensitive】
- 邮箱发送【phpmailer】
- 内容收藏【favorite】
- 队列插件【queue】
- 七牛云【qiniu】
- 阿里云oss【alioss】
- 腾讯云【cos】
- 迅搜全文检索【xunsearch】
- 评论插件【comments】
- 网页即时通讯【webim】(重构已下架)
- 生成js
- window使用
- linux使用(推荐)
- 常见问题
- 友情链接【links】
- 考试插件【kaoshi】(暂停)
- 会员邀请【invite】
- 快递查询插件【expressquery】
- 礼品卡提货系统【pickup】
- 地区插件【area】
- IP归属地查询【ipregion】
- 百度统计插件【baidutongji】
- 消息通知【notice】
- 微信管理【wechat】
- 在线投票系统【vote】
- 前端&组件
- 后台前端框架
- 文件上传
- table数据表格
- auth权限验证
- 动态显示(Favisible)
- 动态下拉(SelectPage)
- 键值组件(Fieldlist)
- uniapp教程
- 常见问题
- YznCMS开发遇到错误怎么办?(新手必看)
- 关闭调试模式
- 伪静态(URL重写)
- 虚拟主机不支持绑定public的方法
- 各类虚拟主机伪静态使用注意事项
- 百度编辑器多图片上传被压缩
- 部分虚拟主机隐藏index.php有问题
- 后台路径admin.php修改
- 后台密码忘记重置方法
- 宝塔面板一键部署
- 后台登录时验证码不显示
- 小程序图片不显示
- 如何自定义404页面显示模板
- 管理员登录时提示请于1天后再尝试登录
- composer
- composer简介
- 内置composer
- 各大厂商镜像地址
- 常用命令
- 拓展知识
- 助手类
- thinkphp维护
- 插件开发
- 目录结构
- 数据库
- 测试数据
- 插件信息
- 插件配置
- 核心文件
- 插件函数
- 🔥开发者入驻
- 申请入驻
- 建立私库
- 插件入驻流程
- 模板入驻流程
- 安全建议
- 更新日记和补丁包