数据库字段备注信息声明语法 CDL (Comment Declaration Language)
数据库字段备注信息声明语法 CDL (Comment Declaration Language)
用途:CDL用于代码生成器的前端组件信息识别。
语法:
[cdl:disable] 禁用,当前不可用。
[cdl:component=checkbox] 控件类型,详见附1。
[cdl:search&operate=like,=] 是否允许搜索,支持操作符:=,>=,<=,like,null,not_null。默认根据字段数据类型使用贪婪模式。
[cdl:display=index] 显示范围:list=列表,create=新建表单,edit=编辑表单,all=全部,none=无,默认 all。
[cdl:required] 必填字段,详见附2。
规范:
建议 CDL 声明写在注释内容的最后面,每个 CDL 声明之间以一个空格隔开,这样排版才不会不影响注释内容的阅读。
[附1]控件类型:
// H5 原生组件
$h5InputBoxTypes = ['color', 'date', 'datetime-local', 'month', 'week', 'time', 'email', 'file', 'hidden', 'image', 'number', 'password', 'range', 'search', 'text', 'url'];
// 业务常用组件
$bizComponents = ['radio', 'checkbox', 'select', 'selectpage', 'selectmulti', 'passwordbox', 'bankcardno', 'image-uploader', 'images-uploader', 'file-uploader', 'files-uploader', 'textarea', 'editor', 'city-picker', 'map-picker', 'jsontable', 'numberbox', 'rate-picker', 'sortable', 'switch', 'code'];
[附2] 必填字段:
一般情况下,字段类型设置为:NOT NULL,判断为必填字段。如果有 DEFAULT '',则判断为选填字段,除非使用 CDL 强制声明为必填。
CDL 综合示例:
CREATE TABLE `ps_article` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`category_id` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '分类ID [cdl:component=select&table=ps_article_category&textfield=category_name&idfield=id]',
`article_title` VARCHAR(255) NOT NULL COMMENT '文章标题',
`author` VARCHAR(60) NOT NULL DEFAULT '' COMMENT '文章作者',
`image` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文章图片 [cdl:component=image]',
`intro` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文章简介 [cdl:component=textarea]',
`content` TEXT NOT NULL COMMENT '文章内容 [cdl:component=editor]',
`share_title` VARCHAR(180) NOT NULL DEFAULT '' COMMENT '文章分享标题 [cdl:disable]',
`share_intro` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '文章分享简介 [cdl:component=textarea] [cdl:disable]',
`visit_count` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '浏览次数 [cdl:search&operate=like,=] [cdl:display=index]',
`sort` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '排序权重 [cdl:display=index]',
`source_link` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '原文链接 [cdl:component=url]',
`flag` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '标志(1=热门,2=推荐,3=轮播) [cdl:component=checkbox]',
`status` TINYINT UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(0=隐藏,1=显示)',
`created_at` INT UNSIGNED NOT NULL COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `key_article_title` (`article_title`),
KEY `key_category_id` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章表';