thinkphp学习08-数据库的链式查询

前面课程中我们通过指向符号"->"多次连续调用方法称为:链式查询,当 Db::name('user')时,返回查询对象(Query),即可连缀数据库对应的方法,而每次执行一个数据库查询方法时,比如 where(),还将返回查询对象(Query),只要还是数据库对象,那么就可以一直使用指向符号进行链式查询,再利用 find()、select()等方法返回数组(Array)或数据集对象(Colletion),而 find()和 select()是结果查询方法(放在最后),并不是链式查询方法

php 复制代码
public function index()
{
    $user = Db::name('user')->where('id', 27)->order('id', 'desc')->find();
    dump($user);
}

有多少种类似 where()的链式操作方法呢,官方文档

如果多次使用数据库查询,那么每次静态创建都会生成一个实例,造成浪费, 我们可以把对象实例保存下来,再进行反复调用即可

php 复制代码
public function index()
{
   $userQuery = Db::name('user');
   $dataFind = $userQuery->where('id', 5)->find();
   dump($dataFind);
   $dataSelect = $userQuery->select();
   dump($dataSelect);
}

当同一个对象实例第二次查询后,会保留第一次查询的值

php 复制代码
public function index()
{
    $userQuery = Db::name('user');
    $data1 = $userQuery->order('id', 'desc')->select();
    echo  Db::getLastSql();
    $data2 = $userQuery->select();
    echo "<br>";
    echo Db::getLastSql();;
}

使用 removeOption()方法,可以清理掉上一次查询保留的值

php 复制代码
public function index()
{
    $userQuery = Db::name('user');
    $data1 = $userQuery->order('id', 'desc')->select();
    echo  Db::getLastSql();
    $userQuery->removeOption('order')->select();
    $data2 = $userQuery->select();
    echo "<br>";
    echo Db::getLastSql();;
}
相关推荐
树谷-胡老师17 分钟前
公元前3400年至公元2024年全球国家地理边界演变数据集
数据库·arcgis·信息可视化
疯狂的Alex18 分钟前
2010-2022 同等学力申硕国考:软件工程简答题真题汇总
数据库·oracle·软件工程
Qlittleboy23 分钟前
tp5的tbmember表闭包查询 openid=‘abc‘ 并且(wx_unionid=null或者wx_unionid=‘‘)
数据库·sql·php
躲在云朵里`1 小时前
Spring Scheduler定时任务实战:从零掌握任务调度
java·数据库·mybatis
小白不想白a1 小时前
【MySQL】常用SQL语句
数据库·sql·mysql
RestCloud1 小时前
从MySQL到StarRocks:全量与增量同步的最佳实践
数据库·mysql·api
Databend1 小时前
Databend 八月月报:向量检索重磅上线,性能飞跃几十倍
数据库
时空自由民.2 小时前
repo 学习教程
大数据·学习·elasticsearch
路弥行至2 小时前
从0°到180°,STM32玩转MG996R舵机
c语言·数据库·stm32·单片机·嵌入式硬件·mcu·mongodb
软测进阶2 小时前
【超详细图文教程】2025年最新Win10 系统安装 MySQL 教程
数据库·mysql