TP8模型需规范命名、继承Model类并显式声明表名;文件与类名须驼峰且一致,如users表对应Users.php和class Users;必须设置protected $name、$pk等属性,否则无法识别表或主键。

在 PHP 8 环境下用 ThinkPHP(特指 TP8)创建模型,核心是规范命名、正确继承、显式绑定表名。不按规则来,模型会“找不到表”或“查不到数据”,哪怕数据库里明明有。
模型文件位置与命名必须严格匹配
模型类统一放在 app/model/ 目录下,文件名和类名都要首字母大写、驼峰式,且完全一致:
- 表名是
users→ 文件名写Users.php,类名写class Users extends Model - 表名是
user_info→ 文件名仍为UserInfo.php,类名仍是class UserInfo extends Model - 不能写成
user.php或users.php,否则自动加载失败
必须显式声明表名或主键
TP8 不再自动推导表名,$name 属性不能省略:
- 若类名是
Users,但表名是users,需写protected $name = 'users'; - 若类名是
User,表名却是members,也得写protected $name = 'members'; - 主键不是
id?补上protected $pk = 'uid'; - 有表前缀(如
think_)?加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'; // 主键字段名
protected $autoWriteTimestamp = true; // 可选:自动写入时间戳
}
快速生成模型(推荐命令行)
终端进入项目根目录,执行:
-
php think make:model model/User→ 自动生成骨架文件 - 然后手动补全
$name和$pk,别跳过这步 - 如果表结构含软删除字段(如
delete_time),可加use think\model\concern\SoftDelete;并启用



















