新闻中心

PHP之ThinkPHP有几种查询?

2025-12-05
浏览次数:
返回列表
ThinkPHP有5种核心查询方式:1.基础链式查询,2.原生SQL查询,3.视图查询,4.关联查询(含预加载),5.查询作用域;其中链式+关联+作用域覆盖90%以上需求。

php之thinkphp有几种查询?

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网上书店系统 MediPro网上书店系统

基于PHP+MYSQL开发,除了网上书店必备的商品管理、配送支付管理、订单管理、会员分组、会员管理、查询统计和多项商品促销功能,还具有完整的文章、图文、下载、单页、广告发布等网站内容管理功能。系统具有静态HTML生成、UTF-8多语言支持、可视化模版引擎等技术特点,支持多频道调用不同模版和任意设置频道首页,适合建立各种规模的网上书店。系统具有以下主要功能模块: 网站参数设置 - 对网站的一些参数进

MediPro网上书店系统 3 查看详情 MediPro网上书店系统

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中单选按钮的正确使用与常见陷阱解析 

搜索