thinkphp学习07-数据库的数据查询

news2025/1/11 22:48:46

单数据查询

单条数据查询,一般是一维数组

Db::table()中 table 必须指定完整数据表(包括前缀),如果配置了表前缀,Db::name()中可以忽略

如果希望只查询一条数据,可以使用 find()方法,需指定 where 条件;

public function index()
{
    $user = Db::table('tp_user')->where('id', 1)->find();
    //$user = Db::name('user')->where('id', 1)->find();
    return json($user);
}

在这里插入图片描述
Db::getLastSql()方法,可以得到最近一条 SQL 查询的原生语句;

public function index()
{
    $user = Db::table('tp_user')->where('id', 1)->find();
    echo print_r($user->array());
    echo "<br>";
    echo Db::getLastSql();
}

在这里插入图片描述
没有查询到任何值,则返回 null;

public function index()
{
    $user = Db::table('tp_user')->where('id', 110)->find();
    echo $user;
}

在这里插入图片描述
使用 findOrFail()方法同样可以查询一条数据,在没有数据时抛出一个异常;

public function index()
{
     $user = Db::table('tp_user')->where('id', 110)->findOrFail();
     echo $user;
 }

在这里插入图片描述
使用 findOrEmpty()方法也可以查询一条数据,但在没有数据时返回一个空数组

public function index()
{
    $user = Db::table('tp_user')->where('id', 110)->findOrEmpty();
    return json($user);
}

在这里插入图片描述

数据集查询

查询多条数据,一般是二维数组
想要获取多列数据,可以使用 select()方法

public function index()
{
   $users = Db::table('tp_user')->select();
   echo Db::getLastSql();
   echo "<br>";
   return json($users);
}

在这里插入图片描述
多列数据在查询不到任何数据时返回空数组,使用 selectOrFail()抛出异常

public function index()
{
   $users = Db::table('tp_user')->where("id",110)->selectOrFail();
   return json($users);
}

在这里插入图片描述
在 select()方法后再使用 toArray()方法,可以将数据集对象转化为数组

public function index()
{
    $users = Db::table('tp_user')->where("id",110)->select();
    dump($users);
    dump($users->toArray());
}

在这里插入图片描述

其它查询

通过 value()方法,可以查询指定字段的值(单个),没有数据返回 null

public function index()
{
    $username = Db::table('tp_user')->where("id", 2)->value("username");
    echo $username;
    $username = Db::table('tp_user')->where("id", 111)->value("username");
    echo $username;
}

在这里插入图片描述
可以指定 id 作为列值的索引

public function index()
{
    $user = Db::name('user')->column('username', 'id');
    return json($user);
}

在这里插入图片描述
如果处理的数据量巨大,成百上千那种,一次性读取有可能会导致内存开销过大,为了避免内存处理太多数据出错,可以使用 chunk()方法分批处理数据,比如,每次只处理 100 条,处理完毕后,再读取 100 条继续处理;
这里数据量不够100,每次取五条

public function index()
{
    Db::table('tp_user')->chunk(5, function ($users) {
        foreach ($users as $user) {
            dump($user);
        }
        echo 1;
    });
}

在这里插入图片描述
可以利用游标查询功能,可以大幅度减少海量数据的内存开销,它利用了 PHP 生成器特性。每次查询只读一行,然后再读取时,自动定位到下一行继续读取;

public function index()
{
    $cursor = Db::table('tp_user')->cursor();
    foreach ($cursor as $user) {
        dump($user);
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1373308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

赋能智慧农业生产,基于YOLOv7开发构建农业生产场景下油茶作物成熟检测识别系统

AI赋能生产生活场景&#xff0c;是加速人工智能技术落地的有利途径&#xff0c;在前文很多具体的业务场景中我们也从实验的角度来尝试性地分析实践了基于AI模型来助力生产生活制造相关的各个领域&#xff0c;诸如&#xff1a;基于AI硬件实现农业作物除草就是一个比较熟知的场景…

IDEA中在Java项目中添加Web模块 与配置tomcat服务器

现有项目添加直接走第二步 生成普通新项目 给项目添加框架支持 勾选 Web Application 选项, 点击OK 得到项目目录结构 , 出现web目录结构, 且web目录文件夹出现小蓝点 web或webapp 没有出现小蓝点 说明web配置没有出现或是手动构建的目录结构 , 在IDE关闭或者迁移项目时会出…

【申请SSL证书】免费申请阿里云SSL证书

注意&#xff1a;申请 SSL证书的前提是有一个域名且备案了 第一部&#xff1a;申请免费证书 免费 CA 证书购买地址&#xff08;请戳这里&#xff09; 选择合适的选项如下图 为了解决免费证书近期存在的吊销、统计等问题&#xff0c;自2021年起&#xff0c;免费证书申请申请将…

Hive基础知识(八):Hive对数据库的增删改查操作

1. 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment]#注释 [LOCATION hdfs_path]#指定当前库的hdfs目录 [WITH DBPROPERTIES (property_nameproperty_value,...)]; #备注创建作者和创建时间 1&#xff09;创建一个数据库&#xff0c;数据…

二、Java中SpringBoot组件集成接入【MySQL和MybatisPlus】

二、Java中SpringBoot组件集成接入【MySQL和MybatisPlus】 1.MySQL和MybatisPlus简介2.maven依赖3.配置1.在application.yaml配置中加入mysql配置2.新增Mybatis-Plus配置类 4.参考文章 1.MySQL和MybatisPlus简介 MySQL是一种开源的关系型数据库管理系统&#xff0c;被广泛应用…

Java 对象的内存布局

目录 一. 前言 二. Java 对象的内存布局 三. Java 对象结构 3.1. 对象头 3.1.1. Mark Word 3.1.2. 类型指针&#xff08;Class Metadata Pointer&#xff09; 3.1.3. 数组长度&#xff08;Length&#xff09; 3.2. 实例数据 3.3. 对齐填充&#xff08;Padding&#xf…

Python-12-正则

当然内容不是很全&#xff0c;可以参考: 正则表达式学习资料 https://blog.csdn.net/weixin_40907382/article/details/79654372

解决录制的 mp4 视频文件在 windows 无法播放的问题

解决录制的 mp4 视频文件在 windows 无法播放的问题 kazam 默认录制保存下来的 mp4 视频文件在 windows 中是无法直接使用的&#xff0c;这是由于视频编码方式的问题。解决办法&#xff1a; 首先安装 ffmeg 编码工具&#xff1a; sudo apt-get install ffmpeg 然后改变视频的…

kivy,一个超级厉害的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超级厉害的 Python 库 - kivy。 Github地址&#xff1a;https://github.com/kivy/kivy Python是一种广泛使用的编程语言&#xff0c;而Kivy是一个用于创建跨平台移动应用和多点触控应用的开源…

【局域网window10系统搭建共享文件夹或与手机共享】

局域网window10系统搭建共享文件夹或与手机共享 1、Window 10之间搭建共享文件夹1.1 ping通两台window 10 电脑1.2 创建共享账号&#xff08;window 10专业版&#xff09;1.3 创建共享文件夹以及配置1.4访问共享文件夹 2、手机访问window10 共享文件夹&#xff08;结合步骤一&a…

kubeSphere DevOps自定义容器环境JDK11

kubeSphere DevOps自定义容器环境JDK11 &#x1f342;前言&#x1f342;增加JDK11容器环境&#x1f341;检查是否成功 &#x1f342;不生效的原因排查&#x1f341;按步骤执行如下命令 &#x1f342;前言 kubeSphere 版本v3.1.1 遇到问题:kubeSphere默认支持容器只有JDK8,目前…

【Axure高保真原型】树控制内联框架

今天和大家分享树控制内联框架的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击最后一级人物节点&#xff0c;可以切换右侧内联框到对应的页面&#xff0c;左侧的树是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表格即…

基于JavaWeb+BS架构+SpringBoot+Vue智能菜谱推荐系统的设计和实现

基于JavaWebBS架构SpringBootVue智能菜谱推荐系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 目 录 目 录 III 第一章 概述 1 1.1 研究背景 1 1.2研究目的及意义 1 1.3…

Java:爬虫htmlunit实践

之前我们已经讲过使用htmlunit及基础&#xff0c;没有看过的可以参考Java&#xff1a;爬虫htmlunit-CSDN博客 我们今天就来实际操作一下&#xff0c;爬取指定网站的数据 1、首先我们要爬取一个网站数据的时候我们需要对其数据获取方式我们要进行分析&#xff0c;我们今天就拿双…

【数据库系统概论】期末复习2

系列文章 期末复习1 系列文章定义并理解下列术语&#xff0c;说明它们之间的联系与区别试述关系模型的完整性规则。在参照完整性中&#xff0c;什么情况下外码属性的值可以为空值&#xff1f;关系代数 定义并理解下列术语&#xff0c;说明它们之间的联系与区别 &#xff08;1…

基于微信小程序的学校图书管理系统开发与实现

学校图书馆里有大量的各种领域的图书&#xff0c;可供学校各个专业的师生来借阅与做科学和论文研究&#xff0c;但过去图书馆的借阅、归还及图书资料的管理完全依靠图书馆工作人员的手工记录与引导师生找寻借阅的书籍&#xff0c;其耗时费力且低效&#xff0c;开发的学校图书管…

《AI基本原理和python实现》栏目介绍

一、说明 栏目《AI基本原理和python实现》的设计目的是为了实现相关算法的python编程。因为用python实现AI需对相关的python库进行全方位了解&#xff0c;本栏目基本包含了【机器学习】相关的经典算法&#xff0c;除此之外还包括了数据分析、时间序列等一些概念和相关python代码…

09、Kafka ------ 通过修改保存时间来删除消息(retention.ms 配置)

目录 通过修改保存时间来删除消息★ 删除指定主题的消息演示1、修改kafka检查过期消息的时间间隔2、修改主题下消息的过期时间3、查看修改是否生效4、先查看下主题下有没有消息5、添加几条消息看效果6、查看消息是否被删除 ★ 恢复主题的retention.ms配置1、先查看没修改前的te…

String#intern

1.intern方法 intern()方法可以在运行期间向字符串中动态加入字符串实例的方式&#xff0c;它的功能很简单,总结起来就一句话 可以在运行时向字符串池中添加字符串常量 添加的原则是&#xff0c;如果常量池中存在当前字符串&#xff0c;则直接返回常量池中它的引用&#xff1b…

【博士每天一篇论文-实验分析】Toroidal topology of population activity in grid cells

阅读时间&#xff1a;2023-11-18 1 介绍 年份&#xff1a;2022 作者&#xff1a;Richard J. Gardner&#xff0c;挪威科技大学卡维利系统神经科学研究所和神经计算中心&#xff0c;挪威特隆赫姆 期刊&#xff1a; Nature 引用量&#xff1a;194 这篇论文通过揭示格状细胞网络…