讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

updream

一键生成高质量推广成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

Seko
Seko

AI短剧一键生成成片

Yii模型查询全解析:从入门到精通【新手必看】

风萱大大_8780

风萱大大_8780

发布时间:2026-08-09 21:29:59

|

767人浏览过

|

来源于php中文网

原创

要快速实现用户列表查询、订单筛选和销量统计,应熟练使用ActiveRecord链式查询:findOne()查单条,find()->all()查全部,where()支持数组/操作符语法,count()/sum()等返回标量,column()需配合asArray()保持数值类型,findBySql()和with()分别处理原生SQL与关联预加载。

yii模型查询全解析:从入门到精通【新手必看】

要在Yii2项目中快速查出用户列表、按条件筛选订单、统计销量总数,又不想写原始SQL或反复调试Query Builder,就得吃透ActiveRecord的查询方法链——它把数据库操作封装成可读性强、可链式调用的对象方法。

基础单条与批量查询

直接用主键查单条记录最常用:调用findOne($id),例如User::findOne(123)会生成SELECT * FROM user WHERE id = 123并返回一个User对象。

findAll()已废弃,统一用find()->all()替代;若需查全部用户,写User::find()->all()即可,返回User对象数组。

注意:【findOne()内部会自动加status=1等默认条件(如果模型里定义了】,比如你重写了findByCondition()或在rules()中设了默认scope,结果可能为空——此时应检查模型类中的find()是否被覆写过。

带条件的查询构建

方法一:使用数组条件语法

User::find()->where(['status' => 1, 'type' => 'vip'])->all()生成WHERE status = 1 AND type = 'vip'。

方法二:使用操作符数组(支持like、in、between等)

User::find()->where(['like', 'name', '张'])查姓名含“张”的用户;['in', 'id', [1,5,8]]查ID在指定列表里的记录。

方法三:链式组合多条件

第一步:User::find()初始化查询对象;

第二步:→where(['status' => 1])设定基础过滤;

第三步:→andWhere(['>=', 'created_at', '2025-01-01'])追加时间范围;

第四步:→orderBy('updated_at DESC')按更新时间倒序;

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载

第五步:→limit(20)只取前20条;最后调用all()执行。

这一步不能漏掉all()或one(),否则只是构建了查询对象,根本不会发SQL到数据库。

聚合与标量结果获取

count()直接返回整数:如User::find()->where(['status' => 1])->count()得活跃用户总数。

sum('amount')计算字段总和,average('score')算平均分,max('price')找最高价——这些方法返回的是PHP标量值,不是AR对象。

scalar()取第一行第一列,常用于SELECT COUNT(*)之后;column()取整列值,返回一维数组,比如User::find()->select('email')->column()得到所有邮箱列表。

【column()默认返回的是字符串数组,若字段是int类型且需要保持数字类型,必须配合asArray()->column()使用】,否则数值会被转成字符串。

原生SQL与复杂查询

方法1:用findBySql()

User::findBySql("SELECT u.*, p.title FROM user u LEFT JOIN profile p ON u.id = p.user_id")->all()——注意:返回的是User对象,但JOIN字段p.title不会自动映射到User属性里,得用asArray()才能拿到完整字段。

方法2:用createCommand()执行纯SQL

Yii::$app->db->createCommand("UPDATE user SET status = 0 WHERE last_login bindValue(':date', '2024-01-01')->execute()——这是非AR方式,不触发模型事件和验证,适合后台批处理。

方法3:混合使用with()做关联预加载

Order::find()->with('customer', 'items.product')->where(['status' => 'paid'])->all()——一次查出订单+客户信息+商品详情,避免N+1查询。注意:with()括号里写的是关系名,不是表名,必须在Order模型里正确定义getCustomer()等getter方法。

热门AI工具

更多
函子Zion

一款支持AI搭建、可视化编辑和多端发布的全栈无代码开发平台。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

3210

2025.09.04

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

40

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

40

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

60

2026.11.05

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

40

2026.11.05

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

60

2026.11.04

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

60

2026.11.04

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

40

2026.11.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn