设为首页收藏本站 |天气与日历| 2025-07-01 星期二 22:54:00 (建党节) 乙巳(蛇)年 六月初七 亥时
     
切换到窄版

私人站点

 找回密码
 立即注册
搜索
查看: 219|回复: 0

02.其他查询方法

[复制链接]

954

主题

954

帖子

3879

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3879
发表于 2022-6-14 21:32:04 | 显示全部楼层 |阅读模式
1、where方法(查询语法)见手册--数据库--查询构造器--查询语法


[PHP] 纯文本查看 复制代码
where('字段名','表达式','查询条件');

whereOr('字段名','表达式','查询条件');



表达式
含义

EQ、=等于(=)
NEQ、<>不等于(<>)
GT、>大于(>)
EGT、>=大于等于(>=)
LT、<小于(<)
ELT、<=小于等于(<=)
LIKE模糊查询
[NOT] BETWEEN(不在)区间查询
[NOT] IN(不在)IN 查询
[NOT] NULL查询字段是否(不)是NULL
[NOT] EXISTSEXISTS查询
EXP表达式查询,支持SQL语法
> time时间比较
< time时间比较
between time时间比较
notbetween time时间比较
注:where方法中,如果比较表达式是等于,可以省略这个参数。
应用示例:
[PHP] 纯文本查看 复制代码
$info = User::where('id','=','1')->find();

$info = User::where('id','1')->find();

$info = User::where('name','like','%thinkphp%')->select();

image-20190705223507911.png
注意:使用了where方法后,查询数据可以使用find方法和select方法,不能使用get方法和all方法。(原因:where方法返回的是Query对象,不是模型对象)
扩展:批量条件查询(手册-数据库-查询构造器-高级查询)
image-20190705223542649.png



2、连贯操作(链式操作)

(见手册--数据库--查询构造器--链式操作)
原理:中间调用的方法,返回值是对象,可以继续调用对象的其他方法。
一条sql语句的组成可以很复杂,里边有where、order by、group by、限制查询的字段、limit、having限制条件等等,这些复杂的条件在tp框架中都有封装
注:TP框架中,中间的方法没有顺序要求,当时用于获取最终结果的find和select等方法,必须在最后。
常用链式操作方法
[PHP] 纯文本查看 复制代码
$model = new Address();

$model->field('id,name')->select(); //指定要查询的字段,原生sql中select后面的字段

$model->order('id desc,time desc')->select(); //相当于原生sql中的order by

$model->limit(3)->select(); //相当于原生sql中的limit条件

$model->limit(0,3)->select(); 

$model->limit('0,3')->select(); 

$model->group('cate_id')->select();  //相当于原生sql中的group by

$model->having('id>3')->select();  //相当于原生sql中的having条件

$model->alias('a')->join('think_user_type t','a.id=t.user_id', 'left')->select(); //alias方法设置别名,join方法连表查询

//Address::alias('a')->join('tpshop_user u','a.user_id = u.id', 'left')->select();

连表查询:SELECT * FROM tpshop_goodspics g LEFT JOIN tpshop_goods gs on g.goods_id = gs.id;
[PHP] 纯文本查看 复制代码
$data = \app\admin\model\Goods::where('id', '>', 32)->field('id, goods_name')->order('id desc')->limit(5)->select();
dump($data);




3、统计查询(聚合查询)
方法
说明

count统计数量,参数是要统计的字段名(可选)
max获取最大值,参数是要统计的字段名(必须)
min获取最小值,参数是要统计的字段名(必须)
avg获取平均值,参数是要统计的字段名(必须)
sum获取总分,参数是要统计的字段名(必须)
这些方法的返回值是具体的数据。在连贯操作中只能放在最后,不需要使用find和select。
count方法 相当于 select count(*) from tpshop_user;
image-20190705223755393.png
image-20190705223844524.png


4、数据字段查询①查询一条记录的一个字段的值


[PHP] 纯文本查看 复制代码
Goods::where(‘id’, 2)->value(‘goods_name’);



②查询多条记录的一个字段的值,返回一个一维索引数组
[PHP] 纯文本查看 复制代码
Goods::where(‘id’, ‘GT’, 2)->column(‘goods_name’);



image-20190705223948463.png


③查询多条记录的一个字段的值,以id字段值作为数组索引


[PHP] 纯文本查看 复制代码
Goods::where(‘id’, ‘GT’, 2)->column(‘goods_name’, ‘id’);



image-20190705224049887.png






5、trace调试

Trace调试功能就是ThinkPHP提供给开发人员的一个用于开发调试的辅助工具。可以实时显示当前页面的操作的请求信息、运行情况、SQL执行、错误提示等
开启trace调试:
修改application/config.php , 配置以下参数:
[PHP] 纯文本查看 复制代码
'app_trace' => true

image-20190705224224392.png
小结练习:
image-20190705224259166.png

















回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|编程站点 ( 冀ICP备2023028127号-2 )|友链申请|

GMT+8, 2025-7-1 22:54 , Processed in 0.114990 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表