ThinkPHP 6.x模型连接数据表通过映射关系实现:1. 默认驼峰转下划线自动映射;2. 用$name指定不含前缀的表名;3. 用$table指定含库名或前缀的完整表名(优先级最高);4. 用$connection绑定特定数据库连接。

模型类名自动映射表名
这是最常用、最简洁的方式。默认情况下,框架会将模型类名(驼峰命名)转为小写下划线格式,作为数据表名:
- UserModel → 自动对应 user 表
- UserInfoModel → 自动对应 user_info 表
- ArticleCategoryModel → 自动对应 article_category 表
前提:模型类需继承 think\Model,且未显式指定表名或前缀。
在模型中指定数据表名
当表名与类名不遵循默认规则时,可在模型类中用 $name 属性明确指定:
-
protected $name = 'member_list';→ 强制使用 member_list 表 -
protected $name = 'sys_user';→ 不受类名影响,直连 sys_user 表
注意:$name 值是**不含前缀的表名**;若全局配置了 prefix,框架会自动拼接。
立即学习“PHP免费学习笔记(深入)”;
指定完整表名(含数据库名或前缀)
跨库查询或需绕过前缀逻辑时,可用 $table 属性写死全名:
-
protected $table = 'log_db.event_log';→ 直接操作 log_db 库下的 event_log 表 -
protected $table = 'think_user';→ 显式写出带前缀的表名,忽略$prefix配置
该方式优先级最高,一旦设置 $table,$name 和前缀配置均不再生效。
绑定特定数据库连接
如果数据表不在默认数据库里,还需让模型走指定连接:
-
protected $connection = 'log_db';→ 必须与config/database.php中connections数组的键名完全一致(小写+下划线) - 搭配
$table = 'event_log'或$name = 'event_log'即可访问目标库中的表
不设 $connection 时,模型始终使用默认数据库连接(即 connections.default)。



















