ThinkPHP模型CRUD必须继承think\Model并置于app\model\目录下,类名与表名对应(可配置$table和$pk),查询返回Model实例或Collection,增删改须带where条件,事件验证仅在Model操作中触发。
ThinkPHP 的模型 CRUD 不是直接写 SQL,而是通过模型类封装的链式方法操作数据库,核心在于理解 Db 类和 Model 类的区别——用 Model 才算真正“TP 模型 CURD”,它自带字段验证、事件、自动完成等能力;纯 Db::table() 属于查询构建器,不算模型层。
必须继承 think\Model,类名与数据表名默认对应(如 User 模型对应 user 表),且需放在 app\model\ 目录下。不规范命名或路径错误会导致 Class 'app\model\User' not found。
app\model\User.php
User,首字母大写,不能写成 user 或 Users
user,要在模型里显式指定:protected $table = 'tb_user';
id 时,要设置:protected $pk = 'user_id';
模型查询返回的是 think\Model 实例(单条)或 think\Collection(多条),不是原始数组。直接 echo $user->name 可以,但 echo $user['name'] 会报错。
find() 参数传整数是按主键查,传数组是复合条件(如 User::find(['status' => 1])),但更推荐统一用 where()->find()
select() 总是返回集合,即使只有一条记录,也不能直接取属性:$users = User::where('status', 1)->select(); echo $users[0]->name;
field() 显式声明,否则会被自动过滤:User::field('id, name, COUNT(*) as total')->group('status')->select();SoftDelete trait)默认不查已删除数据,要用 withTrashed() 或 onlyTrashed()
TP6+ 中 create() 方法被移除,save() 必须配合 data() 或直接传数组。空模型调用 save() 不会插入数据,必须先赋值。
$user = new User(); $user->data(['name' => '张三', 'email' => 'z@example.com']); $user->save();
User::create(['name' => '李四', 'email' => 'l@example.com']);(注意:该方法会触发验证和事件)
saveAll(),参数是二维数组:User::saveAll([
['name' => 'A', 'email' => 'a@x'],
['name' => 'B', 'email' => 'b@x']
]);$autoWriteTimestamp = true,create_time 和 update_time 字段会自动写入,无需手动传delete() 和 save() 都依赖前置的 where() 条件,漏写等于清空或更新整张表。TP 不做“无 where 保护”,线上环境务必加日志或调试开关校验 SQL。
User::where('id', 123)->delete(); // 删除单条User::where('id', 123)->save(['status' => 2]);inc() / dec():User::where('id', 123)->inc('score', 10)->update();delete(),而是 delete(true) 或直接调用 trash()(如果模型用了 SoftDelete)最易被忽略的是模型事件和验证的触
发时机:只有通过 Model 实例的 save()、create()、update() 才会触发 before_insert 等事件;用 Db::name('user')->where(...)->update(...) 完全绕过模型层,字段自动处理、事件、验证全部失效。
# php
# thinkphp
# app
# ai
# 区别
# 聚合函数
# sql
# echo
# 封装
# select
# 继承
# class
# Collection
# delete
# 事件
# table
# 数据库
# 链式
# 的是
# 主键
# 单条
# 放在
# 目录下
# 才会
# 要在
# 要注意
# 用了
相关文章:
建站之星如何快速更换网站模板?
如何选择美橙互联多站合一建站方案?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
MySQL查询结果复制到新表的方法(更新、插入)
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
,怎么在广州志愿者网站注册?
制作企业网站建设方案,怎样建设一个公司网站?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
建站之星备案是否影响网站上线时间?
建站之星会员如何解锁更多建站功能?
定制建站方案优化指南:企业官网开发与建站费用解析
网站app免费制作软件,能免费看各大网站视频的手机app?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何高效生成建站之星成品网站源码?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
公司门户网站制作流程,华为官网怎么做?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
微课制作网站有哪些,微课网怎么进?
如何在阿里云ECS服务器部署织梦CMS网站?
宝塔建站后网页无法访问如何解决?
如何用wdcp快速搭建高效网站?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
网站制作话术技巧,网站推广做的好怎么话术?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
怀化网站制作公司,怀化新生儿上户网上办理流程?
已有域名能否直接搭建网站?
网站按钮制作软件,如何实现网页中按钮的自动点击?
存储型VPS适合搭建中小型网站吗?
,柠檬视频怎样兑换vip?
建站主机CVM配置优化、SEO策略与性能提升指南
重庆网站制作公司哪家好,重庆中考招生办官方网站?
如何选择建站程序?包含哪些必备功能与类型?
如何高效完成自助建站业务培训?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
如何自定义建站之星模板颜色并下载新样式?
如何在万网自助建站平台快速创建网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
制作营销网站公司,淘特是干什么用的?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
黑客如何利用漏洞与弱口令入侵网站服务器?
郑州企业网站制作公司,郑州招聘网站有哪些?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
c++怎么用jemalloc c++替换默认内存分配器【性能】
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
如何通过建站之星自助学习解决操作问题?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何选择适配移动端的WAP自助建站平台?
*请认真填写需求信息,我们会在24小时内与您取得联系。