## 一鍵生成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維護
- 插件開發
- 目錄結構
- 數據庫
- 測試數據
- 插件信息
- 插件配置
- 核心文件
- 插件函數
- ??開發者入駐
- 申請入駐
- 建立私庫
- 插件入駐流程
- 模板入駐流程
- 安全建議
- 更新日記和補丁包