# 根據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
```
刷新后臺,會多個菜單。點進去就是你剛剛生成的。此時我們只需要按照設計,優化下表單和表格即可