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等文档格式 ...
随机推荐
- linux与Windows下的heap
Windows提供Heap相关的API,可以创建多个Heap. 但是Linux下只有一个意义上的Heap,就是Data Segment,由brk/sbrk系统调用来调整其大小. 参考:http://m ...
- Pytest---yield
场景:你已经可以将测试方法前要执行的或依赖的解决了,测试 方法后销毁清除数据的要如何进行呢?范围是模块级别的.类似 setupClass 解决:通过在同一模块中加入 yield关键字,yield是调用 ...
- ubuntu14.04 配置android studio环境
二.复制所需的文件到ubuntu 2.1.如果你还没有linux版本的android studio.sdk.jdk请先下载所需文件,我已经上传到百度网盘了 下载地址: android studio-l ...
- JS对象 屏幕分辨率的高和宽 window.screen 对象包含有关用户屏幕的信息。 1. screen.height 返回屏幕分辨率的高 2. screen.width 返回屏幕分辨率的宽
屏幕分辨率的高和宽 window.screen 对象包含有关用户屏幕的信息. 1. screen.height 返回屏幕分辨率的高 2. screen.width 返回屏幕分辨率的宽 注意: 1.单位 ...
- bash命令根据历史记录补全
用zsh比较方便的一个功能是在找之前用过的命令时可以先输入一部分命令作为过滤条件, 比如,想找 docker run 开头的历史命令,只需要键入 docker run 然后按 ↑ 进行选择. 但是在用 ...
- 【模板篇】NTT和三模数NTT
之前写过FFT的笔记. 我们知道FFT是在复数域上进行的变换. 而且经过数学家的证明, DFT是复数域上唯一满足循环卷积性质的变换. 而我们在OI中, 经常遇到对xxxx取模的题目, 这就启发我们可不 ...
- Codeforces - 1139D - Steps to One (概率DP+莫比乌斯反演)
蒟蒻数学渣呀,根本不会做. 解法是参考 https://blog.csdn.net/xs18952904/article/details/88785210 这位大佬的. 状态的设计和转移如上面博客一样 ...
- 笔记63 Spring Boot快速入门(三)
SpringBoot中使用JSP Springboot的默认视图支持是Thymeleaf,但是Thymeleaf还没开始学,熟悉的还是jsp,所以要让Springboot支持 jsp. 一.在pom. ...
- SpringMVC整合Freemarker(含Demo源码)(转)
转自:http://blog.csdn.net/sinat_27535209/article/details/61199452 整合过程如下: 1.新建一个maven web工程,使用maven依赖s ...
- JSP中调用Spring的方法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...