thinkphp5中常用数据库查询语句介绍

发布时间 - 2020-04-27 00:00:00    点击率:

tp_data 数据表

value()

$name = Db::name('data')
		-> where('id', 16)
		-> value('name');
print_r($name);

// 获取 tp_data 数据表中 id = 16,name 字段的值,并打印
// 结果:1111

/** 原生sql语句
>Prepare SELECT `name` FROM `tp_data` WHERE `id` = ? LIMIT 1
>Execute SELECT `name` FROM `tp_data` WHERE `id` = 16 LIMIT 1
*/

column()

获取一列满足条件的数据

$list = Db::name('data)
		-> where('status', 1)
		-> column('name');
print_r($list);

// 从 tp_data 数据表获取一列 status = 1 的 name 字段值
/** 结果:
Array(
  [0] => thinkphp
  [1] => thinkphp
  [2] => thinkphp
  [3] => thinkphp
  [4] => 7777777777
  [5] => thinkphp
  [6] => thinkphp
  [7] => thinkphp
  [8] => thinkphp
)
*/

获取一列满足条件的数据,并以id值为键名

$list = Db::name('data)
		-> where('status', 1)
		-> column('name', 'id');
print_r($list);

// 从 tp_data 数据表获取一列 status=1 的 name 字段值集合
/** 结果:
Array(
  [3]  => thinkphp
  [4]  => thinkphp
  [5]  => thinkphp
  [6]  => thinkphp
  [7]  => 7777777777
  [8]  => thinkphp
  [9]  => thinkphp
  [10] => thinkphp
  [11] => thinkphp
)
*/

获取以id为键名的数据集

$list = Db::name('data')
    -> where('status', 1)
    -> column('*', 'id');
print_r($list);

// 从 tp_data 数据表获取一列 status=1 的数据集
/** 结果:
Array(
  [3] => Array(
        [id] => 3
        [name] => thinkphp
        [status] => 1
      )
  [4] => Array(
        [id] => 4
        [name] => thinkphp
        [status] => 1
      )
  [5] => Array(
        [id] => 5
        [name] => thinkphp
        [status] => 1
      )
  ...
)
*/

聚合查询

count

max

min

avg

sum

统计 data 表的数据

$count = Db::name('data')
		-> where('status', 1)
		-> count();
echo $count;

// 结果:9

统计 data 表的最大 id

$max = Db::name('data')
		-> where('status', 1)
		-> max('id);
echo $max;
// 结果:11

简单查询

$result = Db::name('data')
		-> where("id > :id and name like :name",
			[
				'id' => 10,
				'name' => "%php%"
			])
		-> select();
print_r($result);

/** 结果:
Array(
  [0] => Array(
          [id] => 11
          [name] => thinkphp
          [status] => 1
      )
)
*/

/** 原生sql语句:
>Prepare SELECT * FROM `tp_data` WHERE (id > ? and name like ?)
>Execute SELECT * FROM `tp_data` WHERE (id > '10' and name like '%php%')
*/

日期查询

日期类型int,时间戳格式

查询时间大于 2016-1-1 的数据

$result = Db::name('users')
		-> whereTime('reg_time', '>', '2016-1-1')
		-> select();
print_r($result);

/** 原生sql语句:
>Prepare SELECT * FROM `tp_users` WHERE `reg_time` > ?
>Execute SELECT * FROM `tp_users` WHERE `reg_time` > 1451577600
*/

查询本周

$result = Db::name('users')
		-> whereTime('reg_time', '>', 'this week')
		-> select();
print_r($result);

// 从本周星期一开始

查询最近两天添加的数据

$result = Db::name('users')
		-> whereTime('reg_time', '>', '-2 days')
		-> select();
print_r($result);

查询创建时间在 2016-1-1 ~ 2017-7-1 的数据

$result = Db::name('users')
		-> whereTime('reg_time', 'between', ['2016-1-1', '2017-7-1'])
		-> select();
print_r($result);

/** 原生sql语句:
>Prepare SELECT * FROM `tp_users` WHERE `reg_time` BETWEEN ? AND ?
>Execute SELECT * FROM `tp_users` WHERE `reg_time` BETWEEN 1451577600 AND 1483200000
*/

查询今天的数据

昨天:yesterday

本周:week

上周:last week

$result = Db::name('users')
		-> whereTime('reg_time', 'today')
		-> select();
print_r($result);

分块查询

Db::name('data')
	-> where('status', '>', 0)
	-> chunk(2, function($list) {
    	foreach($list as $data) {
        	//处理2条记录
    	}
	});

/** 原生sql语句:
>Prepare SELECT * FROM `tp_data` WHERE `status` > ? ORDER BY `id` asc LIMIT 2
>Execute SELECT * FROM `tp_data` WHERE `status` > 0 ORDER BY `id` asc LIMIT 2
>Close stmt
>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2
>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 4 ORDER BY `id` asc LIMIT 2
>Close stmt
>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2
>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 6 ORDER BY `id` asc LIMIT 2
>Close stmt
...
>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2
>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 16 ORDER BY `id` asc LIMIT 2
>Close stmt
>Prepare SELECT * FROM `tp_data` WHERE `status` > ? AND `id` > ? ORDER BY `id` asc LIMIT 2
>Execute SELECT * FROM `tp_data` WHERE `status` > 0 AND `id` > 17 ORDER BY `id` asc LIMIT 2
>Close stmt
*/

改进

$p = 0;
do {
  $result = Db::name('data') -> limit($p, 2) -> select();
  $p += 2;
  //处理数据
} while(count($result) > 0);

推荐教程:《TP5


# 本周  # 键名  # 两天  # 并以  # 值为  # 上周  # 昨天  # column  # Array  # thinkphp 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Angular 表单中正确绑定输入值以确保提交与验证正常工作  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  如何在万网主机上快速搭建网站?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  使用豆包 AI 辅助进行简单网页 HTML 结构设计  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  重庆市网站制作公司,重庆招聘网站哪个好?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  如何用美橙互联一键搭建多站合一网站?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  javascript中对象的定义、使用以及对象和原型链操作小结  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何安全更换建站之星模板并保留数据?  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  5种Android数据存储方式汇总  大同网页,大同瑞慈医院官网?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Laravel如何处理表单验证?(Requests代码示例)  如何在新浪SAE免费搭建个人博客?  Laravel如何实现数据库事务?(DB Facade示例)  如何为不同团队 ID 动态生成多个非值班状态按钮  微信推文制作网站有哪些,怎么做微信推文,急?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  如何在宝塔面板创建新站点?  android nfc常用标签读取总结  Java类加载基本过程详细介绍  Android自定义控件实现温度旋转按钮效果  网站制作企业,网站的banner和导航栏是指什么?  Laravel storage目录权限问题_Laravel文件写入权限设置  如何在橙子建站中快速调整背景颜色?  三星网站视频制作教程下载,三星w23网页如何全屏?  网站图片在线制作软件,怎么在图片上做链接?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  详解Android——蓝牙技术 带你实现终端间数据传输  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何快速配置高效服务器建站软件?