迅睿所有业务表名由库表前缀与逻辑表名组成。安装 SQL、Model 查询与多站点分表都依赖这一约定;改前缀或自建表时须与系统配置一致。
在 config/database.php 的 DBPrefix 中配置,安装默认常见为 dr_(小写)。框架连接对象持有该前缀,Model 中为 $this->prefix。
物理表名 = DBPrefix + 逻辑名,例如逻辑名 admin → 物理表 dr_admin。
同一数据库内勿与其它系统共用同一前缀,避免表冲突;重复安装时若已存在 {前缀}cron 等表会提示已装过。
更换前缀需同时改配置、重命名全部表,并检查应用 SQL / 缓存,生产环境请谨慎并先备份。
核心与自定义安装脚本使用占位符 {dbprefix},安装时替换为实际前缀:
来源优先级示例:可优先使用 dayrui/My/Config/Install.sql,否则使用 dayrui/Fcms/Config/Install.sql。
应用安装 SQL 也应使用 {dbprefix},不要写死 dr_。
逻辑名使用小写字母、数字和下划线,按业务分段。核心常见分组:
| 前缀/模式 | 示例逻辑名 | 说明 |
|---|---|---|
admin_* | admin、admin_menu、admin_role | 后台管理员、菜单、角色 |
member* | member、member_data | 会员主表 / 附表 |
attachment* | attachment、attachment_data | 附件 |
field / linkage* | field、linkage、linkage_data_1 | 字段定义、联动菜单 |
site / cron 等 | site、cron、mail_smtp | 站点、任务、邮件等系统表 |
| app_*** | app_某某插件的表 | 插件表前缀 |
建议:
应用自建表带应用标识,如 myapp_order,避免与核心表名冲突。
主从表可用 {名} / {名}_data,或分表序号 {名}_data_{n}。
主键字段名默认可约定为 id(Model 默认 $id / $key 为 id)。
时间字段常见 inputtime、updatetime(Unix 时间戳)。
字符集建议与系统一致:utf8mb4,引擎多为 InnoDB。
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_ 这类「前缀 + 站点号 + _」形式。
SQL 使用 {dbprefix}逻辑名,不要写死前缀。
逻辑名小写 + 下划线,带应用或业务前缀防冲突。
字段、注释、索引按业务需要补齐;字符集 utf8mb4。
代码侧用 table('逻辑名') 或 dbprefix(),避免漏前缀。
多站数据确认用 table_site / 模块表前缀函数,而不是手写站点号。