ThinkPHP模型正常工作的关键是文件类名严格规范且表名显式声明:模型须置于app/model/下,文件名与类名驼峰一致(如Users.php对应class Users),并必须设置protected $name或$table指定表名。

ThinkPHP模型类要能正常工作,关键就两点:文件和类名严格规范、表名必须显式声明。不按规则来,哪怕数据库连得通,也会报“Class not found”或“table not found”。
模型文件位置与命名必须一致
模型类统一放在 app/model/ 目录下,文件名和类名都要首字母大写、驼峰式,且完全一致:
- 表名是
users→ 文件名写Users.php,类名写class Users extends Model - 表名是
user_info→ 文件名写UserInfo.php,类名写class UserInfo extends Model - 不能写成
user.php、users.php或UserModel.php,否则自动加载失败
必须显式指定表名或完整表路径
TP6/TP8 不再自动推导表名,$name 或 $table 至少设一个:
- 类名是
Users,表名也是users→ 写protected $name = 'users'; - 类名是
User,但实际表名是members→ 同样写protected $name = 'members'; - 带前缀(如
think_users)→ 更推荐直接写protected $table = 'think_users';,优先级高于$name
基础代码模板(可直接复制使用)
以 app/model/User.php 为例:
立即学习“PHP免费学习笔记(深入)”;
<?phpnamespace app\model;
use think\Model;
class User extends Model {
protected $name = 'users'; // 显式指定表名
protected $pk = 'id'; // 主键字段名,非 id 时必改
protected $autoWriteTimestamp = true; // 可选:自动处理 create_time/update_time
}
快速生成 + 手动补全更可靠
终端进入项目根目录,执行:
-
php think make:model model/User→ 自动生成骨架文件 - 生成后务必打开文件,补上
$name和$pk,这步跳过等于白建 - 若提示命令未定义,说明命令行组件未启用,退回手动创建



















