新闻中心
PHP之ThinkPHP有几种查询?
ThinkPHP有5种核心查询方式:1.基础链式查询,2.原生SQL查询,3.视图查询,4.关联查询(含预加载),5.查询作用域;其中链式+关联+作用域覆盖90%以上需求。

ThinkPHP 的查询方式主要围绕模型(Model)和查询构建器(Query Builder)展开,常见且实用的有 5 种核心查询类型,对应不同场景下的数据获取需求。
1. 基础链式查询(最常用)
通过模型调用链式方法组合条件,最终用 select() 或 find() 执行:
-
UserModel::where('status', 1)->order('id desc')->limit(10)->select()—— 查多条 -
UserModel::where('id', 10)->find()—— 查单条(主键查询可简写为find(10))
特点是灵活、可读性强,适合大多数业务逻辑。
2. 原生 SQL 查询
当链式方法难以表达复杂逻辑(如子查询、特定函数、联合查询)时,直接执行原生语句:
-
Db::query("SELECT * FROM user WHERE status = ? AND create_time > ?", [1, '2025-01-01'])—— 查询语句,返回数组 -
Db::execute("UPDATE user SET status = ? WHERE id = ?", [0, 5])—— 执行增删改
注意使用参数绑定防止 SQL 注入,避免拼接变量。
3. 视图查询(View Query)
针对数据库视图或临时表结构,可新建模型指向视图名(如 OrderSummary 对应视图 view_order_summary),然后像普通模型一样链式查询:
OrderSummary::where('year', 2025)->select()
前提是数据库已创建好视图,ThinkPHP 不负责建视图,只做查询封装。
MediPro网上书店系统
基于PHP+MYSQL开发,除了网上书店必备的商品管理、配送支付管理、订单管理、会员分组、会员管理、查询统计和多项商品促销功能,还具有完整的文章、图文、下载、单页、广告发布等网站内容管理功能。系统具有静态HTML生成、UTF-8多语言支持、可视化模版引擎等技术特点,支持多频道调用不同模版和任意设置频道首页,适合建立各种规模的网上书店。系统具有以下主要功能模块: 网站参数设置 - 对网站的一些参数进
3
查看详情
4. 关联查询(含预加载与动态关联)
用于处理一对多、多对一等关系,减少 N+1 查询问题:
-
ArticleModel::with('author,category')->select()—— 预加载关联模型 -
ArticleModel::has('comments', 'count>3')->select()—— 按关联存在/数量筛选 - 在模型中定义
belongsTo/hasMany方法后,支持$article->author延迟加载
合理使用 with() 能显著提升列表页性能。
5. 查询作用域(Scope)封装复用条件
把常用查询条件抽象成作用域方法,提高代码复用性:
- 在模型中定义:
public function scopeActive($query) { return $query->where('status', 1); } - 调用:
UserModel::active()->select()
适合多处用到相同过滤逻辑的场景,比如“启用状态”、“未删除”、“本月数据”等。
基本上就这些。实际开发中,链式查询 + 关联查询 + 作用域 组合覆盖了 90% 以上的查询需求;原生 SQL 和视图查询按需补充。不复杂但容易忽略的是:链式方法顺序不影响结果,但 where 必须在 select 前,且每次调用都会新建查询实例(非单例)。
以上就是PHP之ThinkPHP有几种查询?的详细内容,更多请关注php中文网其它相关文章!
# 用户登录
# 兰州seo推广怎么样
# 会泽网站建设服务热线
# 郑州关键词优化排名技巧
# 格尔木专业网站建设
# 自建SSR推广网站处罚依据
# 崇州网站优化推广服务
# 智能网站优化活动总结
# 住宅项目营销推广思路
# 石景山网站整站优化公司
# 敦煌网站关键词优化排名
# 相关文章
# 组中
# 的是
# 查询
# 复用
# 几种
# 是否存在
# 网上
# 加载
# 链式
# 延迟加载
# 作用域
# 代码复用
# go
# php
# thinkphp
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
c++20的std::jthread是什么_c++可中断线程与RAII式管理
lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法
Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程
创客贴用户入口官网登录 创客贴网页版电脑版系统
腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录
美团外卖商家服务中心入口 美团商家版官网入口
怎么在html里运行vbs脚本_html中运行vbs脚本方法【教程】
Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值
蛙漫官方正版入口 蛙漫网页在线全集免费观看
微信网页版官方快速登录入口 微信网页版网页版账号直达
Bing引擎入口最新2025 Bing搜索免费官方登录
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
jQuery Mask 插件中实现电话号码固定前导零的教程
在J*a中如何隐藏复杂性_使用门面模式组织对象交互
python3时间如何用calendar输出?
优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题
AI泡沫首次被“刺破”:GPU十年都无法存活!
J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析
Discord Slash 命令响应超时问题的异步解决方案
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
TypeScript/J*aScript:高效查找数组中首个唯一ID对象
谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】
铃兰之剑为这和平的世界希里技能组及加点推荐
特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相
怎么在mac上运行html代码_mac运行html代码方法【指南】
漫蛙manwa2最新登录网址_漫蛙manwa2手机网页版入口
cad怎么合并重叠的线段_cad清理重复重叠线条的操作方法
Lar*el 递归关系中排除指定分支的教程
Win11怎么关闭触摸屏_Windows 11禁用HID符合标准触摸屏
C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程
Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性
如何在Promise链中优雅地中断后续then执行
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
谷歌google账号注册详细步骤 谷歌账号注册官方教程
在Go Martini框架中高效服务动态生成图像的实践指南
c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
Selenium Python中处理点击后新窗口加载冻结问题的策略与实践
星露谷物语官网入口 星露谷物语游戏官网入口
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
精准捕获:如何在页面中监听除特定元素外的所有点击事件
电脑安装程序提示“错误1722”怎么办_Windows Installer服务问题解决【教程】
在python-socketio事件处理器中安全访问Flask应用上下文
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
《刺客信条:影》PS5 Pro和Switch 2画面对比
如何提高微信支付的安全性_微信支付安全防护与设置建议
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
Angular中单选按钮的正确使用与常见陷阱解析


2025-12-05
浏览次数:次
返回列表