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();;
}
相关推荐
Nturmoils23 分钟前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
渣波4 小时前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
倔强的石头_1 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
倔强的石头_4 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab5 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence5 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神5 天前
三、用户与权限管理
数据库·mysql
通信小呆呆6 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick6 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee6 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale