首页 > 数据库 >ThinkPHP-数据库操作---查

ThinkPHP-数据库操作---查

时间:2024-04-24 18:13:54浏览次数:17  
标签:name 数据库 Db 查询 --- user ThinkPHP id select

//find 单条数据查询
// 查询单条数据
Db::name('user')->where('id', 1)->find();

// 查询单条数据 如果没有数据 抛出error
Db::name('user')->where('id', 1)->findOrFail();

//查询单挑数据 查询单条数据 如果没有数据返回一个空数组
Db::name('user')->where('id', 1)->findOrEmpty();

//select() 查询数据集
//查询多条数据
Db::table("tp_user")->select();

// 查询多条数据 如果查询不到数据 抛出一个异常
Db::table('tp_user')->where('id', 1)->selectOrFail();

// 查询多条数据 将查询到的数据集对象转化为一个数组
Db::table('tp_user')->select()->toArray();

// 如果在配置文件配置了前缀就可以不用加上tp_user 直接使用上name方法代替掉table
Db::name('user')->select();

// 其他查询
//value 查询单个指定字段的值 如果没有查询到返回null
Db::name('user')->where('id', 1)->value('username');

//colunm 可以指定查询列的多个值 没有数据的话 返回空数组
Db::name('user')->colunm('username');
//并且可以将id设置为索引
Db::name('user')->colunm('username', 'id');

// 如果一次性处理的数据太多很容易报错 使用这种方法 每次查询100条 处理完后继续处理下一个100条
Db::name('user')->chunk(3, function($users) {
foreach ($users as $user) {
dump($user);
}
echo 1;
});

//游标查询 节省资源 每次只读一行 等到下一次读取的时候自动读取下一行
$cursor = Db::name('user')->cursor();
foreach ($cursor as $user) {
dump($user);
}

//数据库操作----链式查询 ----------------------------------------------
/*原理: 链式查询就是使用Db::name('user')的时候 会返回一个query查询对象
这个时候就可以使用链式查询进行一系列的操作 比如where条件表达式 还将返回查询对象
不过比如结果查询方法要放到最后 比如 find() select() toArray()等等 因为并不是链式查询方法
*/

// 其他查询
// 如果多次使用数据库查询的话 每次创建都会生成一个实例 浪费资源 所以可以将实例保存下来 重复调用
$userquery = Db::name('user');
$userfind = $userquery->where('id', 1)->find();
$userselect = $userquery->select();

//但是当一个实例对象进行第二次查询的时候 都会保留上一次的值
$data1 = $userquery->order('id', 'desc')->select();
$data2 = $userquery->select();
return Db::getLastSql(); // 返回上一条查询语句

//为了解决这种弊端 所以要使用removeOption 清理掉上一次的值
$userquery->removeOption('where')->select();

标签:name,数据库,Db,查询,---,user,ThinkPHP,id,select
From: https://www.cnblogs.com/zhuyan710/p/18156046

相关文章

  • 2024天梯赛--理解错题意+脑子宕机
    知识点模块1.遍历九宫格中的每个3x3的方块可以按这么遍历点击查看代码//ij是行数和列数就是每个3x3矩阵的起点for(inti=1;i<=7;i+=3){ for(intj=1;j<=7;j+=3){ for(intx=i;x<i+3;x++) { for(inty=j;y<j+3;y++)......
  • a-textarea(textarea)出现模糊问题的可能解决方案
    a-textarea(textarea)出现模糊问题的可能解决方案项目介绍:本项目是一个vue3+ant-design-vue4.x开发,是一个客服机器人的组件。其它项目通过iframe+js文件来引入(iframe的内容就是表单,入口按钮是通过js文件进行dom操作创建)。通过js监听页面宽度,然后通过transform来适配不同分辨率......
  • 面试常问问题-中间件一kafka
    kafka是一个分布式发布订阅消息系统名词:生产者(producer)、消费者(consumer)、topic(一个消息又一个topic)、partition(分区)作用1:传输数据(ey:埋点)kafka发送消息失败的可能:1、网络问题导致kafka的服务器无法连接;2、生产者配置错误;3、消息大小超过服务器配置的限制;4、主......
  • 2024-04-24 vue2知识点小结
    Vue实例的创建和基本使用方法:使用newVue()创建一个Vue实例。传入一个包含选项的对象,如data、methods、computed、watch等。使用el选项来指定Vue实例挂载的元素。数据绑定:双向数据绑定:使用v-model指令实现表单元素与数据的双向绑定。单向数据绑定:使用v......
  • 面试常问问题-中间件一kafka
    kafka是一个分布式发布订阅消息系统名词:生产者(producer)、消费者(consumer)、topic(一个消息又一个topic)、partition(分区)作用1:传输数据(ey:埋点)kafka发送消息失败的可能:1、网络问题导致kafka的服务器无法连接;2、生产者配置错误;3、消息大小超过服务器配置的限制;4、主题......
  • 记录:创建个人博客网站(基于FLASK)2.2建立数据库的连接
    2.2、建立数据库的连接在本项目中,没有使用FLASK官方教程的sqlite3数据库,而是使用的本地的Mysql数据库。采用了flask_sqlalchemy库,实现了与目标数据库的映射。通过调用click库,实现了在终端窗口输入命令行的形式来初始化数据库:psc:/>flask--appinit-db#flaskr/db.pyf......
  • Vue--POST请求和GET请求
    1、POST请求(POST请求原则上都要传参数,下面介绍两种传参数的方法)1.1POST请求传参方法1--字典类型参数Vue前端代码<template><formclass="form-inlinepanel-body"id="formData"><div><label>账号</label><inpu......
  • 设计模式-状态模式在Java中的使用示例-信用卡业务系统
    场景在软件系统中,有些对象也像水一样具有多种状态,这些状态在某些情况下能够相互转换,而且对象在不同的状态下也将具有不同的行为。为了更好地对这些具有多种状态的对象进行设计,我们可以使用一种被称之为状态模式的设计模式。状态模式用于解决系统中复杂对象的状态转换以及不同状......
  • 使用create-react-app,配置proxy报错(options.allowedHosts[0] should be a non-empty
    ​#使用create-react-app,配置proxy报错(options.allowedHosts[0]shouldbeanon-emptystring)今天在启动项目的时候遇到一个神奇的问题,这个问题具体报错信息是:Invalidoptionsobject.DevServerhasbeeninitializedusinganoptionsobjectthatdoesnotmatchtheAP......
  • 01-初始Vue
    官网https://cn.vuejs.org/MVVM架构MVVM是Model-View-ViewModel的缩写,它是一种基于前端开发的架构模式,是一种事件驱动编程方式Model:vue对象的data属性里面的数据,这里的数据要显示到页面中View:vue中数据要显示的HTML页面,在vue中,也称之为“视图模板”(HTML+CSS)ViewModel:v......