thinkphp 6 不提供独立的 database 类,数据库操作通过 think\db 门面、model 基类或 db() 函数触发,底层由连接管理器、查询构建器和驱动实例协作完成;think\database 类已在 tp6 中移除。

ThinkPHP 不会自动加载数据库类——它压根不提供叫 Database 或 Db 的独立“数据库类”,所有数据库操作都通过 think\Db 门面、think\Model 基类或 db() 辅助函数触发,背后是连接管理器 + 查询构建器 + 驱动实例的组合,不是靠 PSR-4 自动加载某个单一类文件。
为什么 new Database() 或 use Database; 会报 Class not found
常见错误现象:Class "Database" not found、Class "app\model\Database" not found、甚至 Class "think\Database" not found(注意:TP6 中已无该类)。
-
think\Database是 TP5.1 及更早版本的底层驱动基类,TP6 已彻底移除,改用think\facade\Db和think\db\Connection等分散职责的类 - 你写的
app\model\Database类如果不存在对应文件(如app/model/Database.php),且命名空间/路径/文件名大小写不一致,Composer 就不会加载它 - 直接
new \Database()没有命名空间前缀,PHP 会去全局空间找,而 ThinkPHP 从不注册全局类
真正能“自动加载”的数据库相关类有哪些
TP6 的数据库能力由多个可自动加载的类协同完成,前提是它们符合 PSR-4 规范并被 Composer 索引:
-
think\Model→ 对应vendor/topthink/think-orm/src/Model.php,由 Composer 自动加载(无需手动 require) -
think\facade\Db→ 对应vendor/topthink/think-orm/src/facade/Db.php,也是 Composer 加载,但本质是静态代理 - 自定义模型类如
app\model\User→ 必须放在app/model/User.php,命名空间为app\model,且执行过composer dump-autoload -o - 连接驱动类如
think\db\connector\Mysql→ 路径为vendor/topthink/think-orm/src/db/connector/Mysql.php,自动加载由 Composer 完成
关键点:这些类能加载,不是因为 ThinkPHP “特殊照顾数据库”,而是因为它们在 composer.json 里被正确声明为 PSR-4 映射,且物理路径与命名空间严格对齐。
手动加载数据库类的典型错误操作
有人试图绕过自动加载机制,用 import()、Loader::import() 或 require_once 引入数据库相关文件,这在 TP6 中基本无效或危险:
-
import('db')或import('think.db'):TP6 已移除import()函数,调用即报Call to undefined function import() -
require_once 'vendor/topthink/think-orm/src/Db.php':路径硬编码、破坏 autoloader 缓存、可能导致重复定义或命名空间污染 -
Loader::addClassMap('think\Db', ...):TP6 的think\Loader已不主导自动加载,这类映射不会生效,Composer 才是唯一权威
如果你改了模型类或新增了查询类,唯一可靠动作就是 composer dump-autoload -o,别碰 Loader 相关 API。
调试数据库类加载失败的三步检查法
当 app\model\User 报错找不到时,按顺序查:
- 确认文件存在且路径准确:
app/model/User.php(不是App/Model/User.php或app/Model/user.php) - 打开该文件,检查顶部命名空间是否为
namespace app\model;(全小写,无空格,末尾分号) - 运行
composer dump-autoload -o;若刚安装新包,再补一句composer show topthink/think-orm确认 ORM 包已正确安装
最常被忽略的是大小写:Linux 服务器上 App\Model\User 和 app\model\User 是两个不同命名空间,但 Windows 开发环境可能“恰好”不报错,一上线就崩。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











