ThinkPHP5实用的数据库操作方法
1、update方法总结
/**
* 设置记录的某个字段值
* 支持使用数据库字段和方法
* @access public
* @param string|array $field 字段名
* @param mixed $value 字段值
* @return integer
*/
function setField($field, $value = ''){};
//设置某个字段的值,适用场景:适用于用户积分清零、余额清零等类似操作
Db::name('table')->where('id',1)->setField('field',0);
/**
* 字段值(延迟)增长
* @access public
* @param string $field 字段名
* @param integer $step 增长值
* @param integer $lazyTime 延时时间(s)
* @return integer|true
* @throws Exception
*/
public function setInc($field, $step = 1, $lazyTime = 0){};
//自增某个字段的值,参数2不传时默认为自增1,适用场景:适用于用户积分增加、余额增加等类似操作,需要延时更新则传入第三个参数(单位秒),
Db::name('table')->where('id',1)->setInc('field',2);
/**
* 字段值(延迟)减少
* @access public
* @param string $field 字段名
* @param integer $step 减少值
* @param integer $lazyTime 延时时间(s)
* @return integer|true
* @throws Exception
*/
public function setDec($field, $step = 1, $lazyTime = 0){};
//自减某个字段的值,参数2不传时默认为自减1,适用场景:适用于用户积分扣除、余额扣除等类似操作,需要延时更新则传入第三个参数(单位秒),
Db::name('table')->where('id',1)->setDec('field',2);
/**
* 使用表达式设置数据
* @access public
* @param mixed $value 表达式
* @return Expression
*/
public function raw($value){};
//自增或自减多个字段的值,raw方法内支持SQL函数,适用场景:适用于同时更新用户累计余额、当前余额等类似操作
Db::name('table')->where('id',1)->update([
'total_remain' => Db::raw("total_remain+100"),
'remain' => Db::raw("remain+100"),
]);
2、select方法总结
/**
* 得到某个字段的值
* @access public
* @param string $field 字段名
* @param mixed $default 默认值
* @param bool $force 强制转为数字类型
* @return mixed
*/
public function value($field, $default = null, $force = false){}; //查询某个字段的值,参数1支持SQL函数,适用场景:适用于获取用户余额、积分、名称等类似操作
Db::name('table')->where('id',1)->value('field'); //参数1为SQL函数时,如下、相当于使用TP5聚合查询
Db::name('table')->where('id',1)->value('COUNT(*) as count')['count']; //统计符合查询条件数据的行数
Db::name('table')->where('id',1)->value('MAX(field) as max')['max']; //获取符合查询条件数据的最大值
Db::name('table')->where('id',1)->value('MIN(field) as min')['min']; //获取符合查询条件数据的最小值
Db::name('table')->where('id',1)->value('AVG(field) as avg')['avg']; //获取符合查询条件数据的平均值
Db::name('table')->where('id',1)->value('SUM(field) as sum')['sum']; //获取符合查询条件数据的总和值
/**
* 得到某个列的数组
* @access public
* @param string $field 字段名 多个字段用逗号分隔
* @param string $key 索引
* @return array
*/
public function column($field, $key = ''){}; //查询某一列的值,适用场景:适用于获取关联订单商品ID、用户所有店铺ID、获取班级所有学生姓名等类似操作
Db::name('table')->where('order_id',1)->column('field');
/**
* COUNT查询
* @access public
* @param string $field 字段名
* @return integer|string
*/
public function count($field = '*'){}; //统计符合查询条件数据的行数,适用场景:适用于获取用户未读消息数量等类似操作
Db::name('table')->where('status',1)->count();
/**
* SUM查询
* @access public
* @param string $field 字段名
* @return float|int
*/
public function sum($field){}; //获取符合查询条件数据的总和值,适用场景:适用于获取用户总支出、总收入金额等类似操作
Db::name('table')->where('pay_type',1)->sum();
/**
* MIN查询
* @access public
* @param string $field 字段名
* @param bool $force 强制转为数字类型
* @return mixed
*/
public function min($field, $force = true){}; //获取符合查询条件数据的最小值,适用场景:适用于获取积分排名最后的用户等类似操作
Db::name('table')->where('status',1)->min();
/**
* MAX查询
* @access public
* @param string $field 字段名
* @param bool $force 强制转为数字类型
* @return mixed
*/
public function max($field, $force = true){};
//获取符合查询条件数据的最大值,适用场景:适用于获取积分排名第一的用户等类似操作
Db::name('table')->where('status',1)->max();
/**
* AVG查询
* @access public
* @param string $field 字段名
* @return float|int
*/
public function avg($field){}; //获取符合查询条件数据的平均值,适用场景:适用于班级平均分等类似操作
Db::name('table')->where('status',1)->avg();
3、insert方法总结
$insert = [
['order_id' => 1, 'goods_id' => 1, 'attr_id' => 1],
['order_id' => 1, 'goods_id' => 1, 'attr_id' => 1],
['order_id' => 1, 'goods_id' => 1, 'attr_id' => 1]
];
//插入多条数据,适用场景:适用于用户购买商品记录订单商品信息等类似操作
Db::name('table')->insertAll($insert); $insert = ['order_id' => 1, 'goods_id' => 1, 'attr_id' => 1];
//插入一条数据并返回自增列值,适用场景:适用于用户购买商品生成订单后记录订单关联信息时获取生成订单的自增ID等类似操作
Db::name('table')->insertGetId($insert);
4、链式查询
//往分页查询的结果集内添加数据,适用于需要使用关联表查询到的数据再做另外的查询并存入数据集
$model->where('o.status<>6')->order('id desc')->paginate()->each(
function ( $item ){
$service_ids = Db::name('order_service')->where('order_id',$item['id'])->column('service_id');
$service_names = Db::name('service')->where('id','in',$service_ids)->column('name');
$item['service_names'] = implode(',',$service_names);
return $item;
}
);
//获取分页查询结果集内的全部数据,适用于需要使用分页数据内的某些数据再做另外的查询
$list = $model->where('o.status', 0)
->where('o.pay_status', 0)
->order('o.id desc')
->paginate(); //分页查询 $data = $list->toArray(); //获取分页查询结果集合并将结果集合转换为数组(包含分页信息)
ThinkPHP5实用的数据库操作方法的更多相关文章
- C#-数据库访问技术 ado.net——创建 数据库连接类 与 数据库操作方法 以及简单的数据的添加、删除、修改、查看
数据库访问技术 ado.net 将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术 1.创建数据库,并设置主外键 ...
- 常用的PHP数据库操作方法(MYSQL版)
常用的PHP数据库操作方法(MYSQL版) 作者: 字体:[增加 减小] 类型:转载 时间:2011-06-08 最近一直在折腾自己的网站首页,写的大部分PHP脚本都要用到和MYSQL数据库相关的 ...
- 黄聪:Discuz!X/数据库操作方法、DB::table、C::t
函数 功能 DB::table($tablename) 获取正确带前缀的表名,转换数据库句柄, DB::delete($tablename, 条件,条数限制) 删除表中的数据 DB::insert($ ...
- TP5数据库操作方法
一.TP5数据库操作方法 1.name()方法作用 : 指定默认的数据表名(不含前缀)示例 : Db::name(‘weiba_post’);返回 : Db对象 2.setTable()方法作用 : ...
- VB通用数据库操作方法
1.VB通用数据操作方法. 2.通用数据库查询方法. 3.通用数据库操作方法. 'ERP查询数据库 Public Function YZQuery(sqls As String, msgstring ...
- LinUX系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展
LinUX(centOS6.8)系统ThinkPHP5链接MsSQL数据库的pdo_dblib扩展第一步 下载并安装freetds-current.tar.gz下载地址如下ftp://ftp.free ...
- ylb: 数据库操作方法基础
ylbtech-SQL Server:SQL Server-数据库操作方法基础 数据库操作方法基础. ylb: 数据库操作方法基础 返回顶部 ----------试图操作(view)--------- ...
- TP5数据库操作方法总结
一.TP5数据库操作方法 1.name()方法 作用 : 指定默认的数据表名(不含前缀) 示例 : Db::name('weiba_post'); 返回 : ...
- DBCHM -最简单、最实用的数据库文档生成工具
项目介绍 DBCHM 是一款数据库文档生成工具! 该工具从最初支持chm文档格式开始,通过开源,集思广益,不断改进,又陆续支持word.excel.pdf.html.xml.markdown等文档格式 ...
随机推荐
- Leetcode 跳跃游戏 II
题目链接:https://leetcode-cn.com/problems/jump-game-ii/ 题目大意: 略. 分析: 贪心 + DP. 代码如下: class Solution { pub ...
- 使用vue-cli3时怎么mock数据
应用场景 在前后端分离的开发模式中,后端给前端提供一个接口,由前端向后端发请求,得到数据后前端进行渲染. 由于前后端开发进度的不统一,前端往往使用本地的测试数据进行数据渲染的测试. 如何配置 在vue ...
- apache虚拟主机配置及解析
Apache虚拟主机配置及解析 1.修改httpd-vhosts.conf 打开apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虚拟主机信息,可以这 ...
- CSS Sprites技术原理和使用
在分析各个网站的CSS时,我们经常可以看到一些网站有很多的元素共享了一张背景图片,而这张背景图片包含了所有这些元素需要的背景,这种技术就叫做CSS Sprites. 淘宝的css sprites ...
- oracle知识博客链接
http://blog.csdn.net/YiQiJinBu/article/category/1100395/1
- ollvm 编译
ollvm 的编译相对 llvm 更简单, 1:下载ollvm代码,去 https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0 下载,并 ...
- 2018-2-13-安装-aria2
title author date CreateTime categories 安装 aria2 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 + ...
- 2018-12-2-C#-Span-入门
title author date CreateTime categories C# Span 入门 lindexi 2018-12-02 11:32:46 +0800 2018-06-18 11:1 ...
- C 编译器的“贪心法”
C语言中有单字符符号和多字符符号之分,那么,当C编译器读入一个字符‘/’后又跟了一个字符‘*’,那么编译器就必须做出判断:是将其作为两个分别的符号对待,还是合起来作为一个符号对待.C语言对这个问题的解 ...
- 前端学习(二十)jquery属性(笔记)
jq里面操作属性的方法: 设置属性: 设置一个: $(this).attr('src','img/pic2.jpg'); 设置一组: ...