表前缀与命名约定

迅睿所有业务表名由库表前缀逻辑表名组成。安装 SQL、Model 查询与多站点分表都依赖这一约定;改前缀或自建表时须与系统配置一致。

库表前缀(DBPrefix)

config/database.phpDBPrefix 中配置,安装默认常见为 dr_(小写)。框架连接对象持有该前缀,Model 中为 $this->prefix

  • 物理表名 = DBPrefix + 逻辑名,例如逻辑名 admin → 物理表 dr_admin

  • 同一数据库内勿与其它系统共用同一前缀,避免表冲突;重复安装时若已存在 {前缀}cron 等表会提示已装过。

  • 更换前缀需同时改配置、重命名全部表,并检查应用 SQL / 缓存,生产环境请谨慎并先备份。

安装 SQL 占位符

核心与自定义安装脚本使用占位符 {dbprefix},安装时替换为实际前缀:

来源优先级示例:可优先使用 dayrui/My/Config/Install.sql,否则使用 dayrui/Fcms/Config/Install.sql

应用安装 SQL 也应使用 {dbprefix},不要写死 dr_

逻辑表命名

逻辑名使用小写字母、数字和下划线,按业务分段。核心常见分组:

前缀/模式示例逻辑名说明
admin_*adminadmin_menuadmin_role后台管理员、菜单、角色
member*membermember_data会员主表 / 附表
attachment*attachmentattachment_data附件
field / linkage*fieldlinkagelinkage_data_1字段定义、联动菜单
site / cronsitecronmail_smtp站点、任务、邮件等系统表
app_***app_某某插件的表插件表前缀

建议:

  • 应用自建表带应用标识,如 myapp_order,避免与核心表名冲突。

  • 主从表可用 {名} / {名}_data,或分表序号 {名}_data_{n}

  • 主键字段名默认可约定为 id(Model 默认 $id / $keyid)。

  • 时间字段常见 inputtimeupdatetime(Unix 时间戳)。

  • 字符集建议与系统一致:utf8mb4,引擎多为 InnoDB

在 Model 中的用法

is_table_exists / fieldExists 等对已带前缀的表名会识别,未带前缀时会自动补上。

多站点相关表名

站点维度表名在逻辑层常带站点 ID,再叠加库表前缀:

助手函数逻辑名结果物理表示例(前缀 dr_)
dr_site_table_prefix($table, $siteid){siteid}_{table}dr_1_xxx
dr_module_table_prefix($dir, $siteid){siteid}_{dir}模块按站分表
dr_mform_table_prefix($dir, $table, $siteid){siteid}_{dir}_form_{table}模块表单表

Model 提供 table_site($name, $site = 0),内部使用 dr_site_table_prefix

安装部分站点 SQL 也会把占位符替换成 {DBPrefix}1_ 这类「前缀 + 站点号 + _」形式。

新建表检查清单

  1. SQL 使用 {dbprefix}逻辑名,不要写死前缀。

  2. 逻辑名小写 + 下划线,带应用或业务前缀防冲突。

  3. 字段、注释、索引按业务需要补齐;字符集 utf8mb4

  4. 代码侧用 table('逻辑名')dbprefix(),避免漏前缀。

  5. 多站数据确认用 table_site / 模块表前缀函数,而不是手写站点号。

本文地址:https://m.xunruicms.com/doc/1481.html