thinkphp6模型是连接数据库与业务逻辑的默认桥梁,需放在app/model/下、按驼峰命名建类并继承think\model,配置好.env或config/database.php数据库连接,再用find/select/create/update/destroy等方法操作数据。

ThinkPHP6模型不是“可选插件”,而是连接数据库与业务逻辑的默认桥梁。它自动映射数据表、封装常用操作、支持链式查询,写法简洁且不易出错——关键在于理解命名规则、配置位置和调用方式。
模型文件怎么建?放哪?取啥名?
模型类必须放在 app/model/ 目录下,文件名与类名严格一致,首字母大写、驼峰命名。例如:
- 对应数据表
user→ 文件名User.php,类名class User extends think\Model - 对应表
shop_goods(带前缀)→ 文件名Goods.php,类名class Goods extends think\Model - 若表名不规范(如
tp_users),在模型中显式指定:protected $table = 'tp_users';
数据库连不上?先检查这两处
模型能用的前提是数据库已通。ThinkPHP6优先读取项目根目录下的 .env 文件:
- 确保
.env存在且内容完整,包含DB_TYPE、DB_HOSTNAME、DB_DATABASE、DB_USERNAME等项 - 如果禁用 .env,需手动编辑
config/database.php中的connections.mysql配置 - 快速验证:在控制器里执行
Db::query('SELECT 1'),不报错即连接成功
增删改查四步走,直接套用
模型支持静态调用,无需 new 实例。基础操作示例如下:
-
查单条:
User::find(1)或User::where('email', 'a@b.com')->find() -
查多条:
User::where('status', 1)->select()->toArray() -
新增:
User::create(['username' => '小王', 'email' => 'xw@example.com']) -
更新:
User::where('id', 5)->update(['email' => 'new@example.com'])或$user = User::find(5); $user->email = 'new@example.com'; $user->save(); -
删除:
User::destroy(8)(主键删除)或User::where('status', 0)->delete()
字段写不进去?注意这三点
常见写入失败往往卡在字段控制上:
- 模型默认只允许写入数据库中存在的字段;若表有额外字段(如
create_time),需在模型中声明:protected $schema = ['id'=>'int', 'username'=>'string', 'create_time'=>'datetime']; - 想限制可写字段,用
allowField():User::create($data, ['username', 'email']) - 主键不是
id?在模型中设置:protected $pk = 'user_id';
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











