现在开源的框架都有自定义字段功能,用来根据项目情况扩展额外的字段信息,drupal/joomla/wordpress都有这方面的设置及插件。在了解功能操作的同时,清楚表结构关系,会对我们定制开发有更清晰的认识。
1,涉及表
lzh_fields 扩展字段主表
lzh_fields_categories 字段分类关系表
lzh_fields_groups 字段分组表
lzh_fields_values 扩展字段存储值表
2,表字段说明,由于开源系统一般字段comment为空,没有相关说明。现整理如下:
(1)lzh_fields表
CREATE TABLE lzh_fields
(
id
INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
asset_id
INT(10) UNSIGNED NOT NULL DEFAULT ‘0’,//lzh_assets表ID
context
VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//扩展类型名称
group_id
INT(10) UNSIGNED NOT NULL DEFAULT ‘0’,//所属字段组ID
title
VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//字段中文名称
name
VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//字段名
label
VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//标签
default_value
TEXT COLLATE utf8mb4_unicode_ci,//默认值
type
VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘text’,//字段类型
note
VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//备注
description
TEXT COLLATE utf8mb4_unicode_ci NOT NULL,//说明
state
TINYINT(4) NOT NULL DEFAULT ‘0’,//状态
required
TINYINT(4) NOT NULL DEFAULT ‘0’,//是否必选(填)字段
only_use_in_subform
TINYINT(4) NOT NULL DEFAULT ‘0’,//仅在子表单(Subform)中使用
checked_out
INT(10) UNSIGNED DEFAULT NULL,//编辑人
checked_out_time
DATETIME DEFAULT NULL,//编辑时间
ordering
INT(11) NOT NULL DEFAULT ‘0’,//排序
params
TEXT COLLATE utf8mb4_unicode_ci NOT NULL,//扩展“选项“信息
fieldparams
TEXT COLLATE utf8mb4_unicode_ci NOT NULL,//扩展 标签过滤类型 最大字符数量
language
CHAR(7) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//语言
created_time
DATETIME NOT NULL,//创建时间
created_user_id
INT(10) UNSIGNED NOT NULL DEFAULT ‘0’,//创建人
modified_time
DATETIME NOT NULL,//更新时间
modified_by
INT(10) UNSIGNED NOT NULL DEFAULT ‘0’,//更新人
access
INT(11) NOT NULL DEFAULT ‘1’,//访问级别
PRIMARY KEY (id
),
KEY idx_checkout
(checked_out
),
KEY idx_state
(state
),
KEY idx_created_user_id
(created_user_id
),
KEY idx_access
(access
),
KEY idx_context
(context
(191)),
KEY idx_language
(language
)
) ENGINE=INNODB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
check_out
check_out_time
文章在编辑时会被check out,这样其他人不能修改check out状态的文章,只有等到编辑完成后,check out状态才会解除。但有时候可能未编辑完就关闭,或者浏览器出错等等,这样文章会一直保持check out状态。Global Check-in就是解决这个问题的工具。
通过表数据是可以查看的,在编辑时,check_out和check_out_time才会有值。编辑完成后就会为空。
(2)lzh_fields_categories表
CREATE TABLE lzh_fields_categories
(
field_id
INT(11) NOT NULL DEFAULT ‘0’,//lzh_fields 表主键ID
category_id
INT(11) NOT NULL DEFAULT ‘0’,//所属分类ID
PRIMARY KEY (field_id
,category_id
)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
category_id 新建/编辑字段时,选择的分类
(3)lzh_fields_groups表
CREATE TABLE lzh_fields_groups
(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
asset_id
int(10) unsigned NOT NULL DEFAULT ‘0’,//lzh_assets表ID
context
varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//扩展类型名称
title
varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//字段组名
note
varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//备注
description
text COLLATE utf8mb4_unicode_ci NOT NULL,//说明
state
tinyint(4) NOT NULL DEFAULT ‘0’,//状态
checked_out
int(10) unsigned DEFAULT NULL,//编辑人
checked_out_time
datetime DEFAULT NULL,//编辑时间
ordering
int(11) NOT NULL DEFAULT ‘0’,//排序
params
text COLLATE utf8mb4_unicode_ci NOT NULL,//扩展“选项“信息
language
char(7) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ‘’,//语言
created
datetime NOT NULL,//发布选项-创建时间
created_by
int(10) unsigned NOT NULL DEFAULT ‘0’,//发布选项-创建人
modified
datetime NOT NULL,//发布选项-修改时间
modified_by
int(10) unsigned NOT NULL DEFAULT ‘0’,//发布选项-修改人
access
int(11) NOT NULL DEFAULT ‘1’,//访问级别
PRIMARY KEY (id
),
KEY idx_checkout
(checked_out
),
KEY idx_state
(state
),
KEY idx_created_by
(created_by
),
KEY idx_access
(access
),
KEY idx_context
(context
(191)),
KEY idx_language
(language
)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
(4)lzh_fields_values表
CREATE TABLE lzh_fields_values
(
field_id
INT(10) UNSIGNED NOT NULL,//lzh_fields 字段表ID
item_id
VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT ‘Allow references to items which have strings as ids, eg. none db systems.’,//扩展字段所属类型的ID(文章ID或分类ID)
value
MEDIUMTEXT COLLATE utf8mb4_unicode_ci,//扩展字段保存的值
KEY idx_field_id
(field_id
),
KEY idx_item_id
(item_id
(191))
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci