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等文档格式 ...
随机推荐
- vb写文件时报'Invalid procedure call or argument'
原来的一段代码是这样的: Set fso3 = CreateObject("Scripting.FileSystemObject") 'msgbo ...
- springboot整合jsp 遇到的问题
1,在idea中新建jsp文件 首先需要在springboot项目 在src 中webapp /WEB-INF/JSP 当我右键想新建一个jsp文件时默认没有 File->Project Str ...
- linux执行wget url时提示“无法建立 SSL 连接”
linux执行wget url时提示“无法建立 SSL 连接” 原因: wget在使用HTTPS协议时,默认会去验证网站的证书,而这个证书验证经常会失败 解决方案: 1.加上参数“--no-check ...
- 《构建之法》IT行业的创新 读书笔记 WEEK 5
本周选读邹欣老师的<构建之法>第16章——IT行业的创新. 邹欣老师将本章话题分成五个部分来阐述:创新的迷思.创新的时机.创新的招数.魔方的创新.创新和作坊,博主认为时机和招数这两个部分在 ...
- 使用JMail发送邮件
使用JMail做最简单的文本邮件发送: 第一步.下载JMail和JAF 第二步.解压放到本地classpath中 第三步.使用: public class MailService{ privat ...
- 事件循环--eventloop
一.什么是事件循环? 事件循环是 JS 实现异步的具体解决方案,同步代码直接执行,异步函数或代码块先放在异步队列中,待同步函数执行完毕,轮询执行异步队列的函数. 事件循环 二.node.js中的事件循 ...
- MOS管知识大集
MOS管 增强型:就是UGS=0V时漏源极之间没有导电沟道,只有当UGS>开启电压(N沟道)或UGS<开启电压(P沟道)才可能出现导电沟道.耗尽型:就是UGS=0V时,漏源极之间存在导电沟 ...
- 项目案例之Pipeline流水线发布JAVA项目(三)
项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...
- 企业级NginxWeb服务优化实战(下)
企业级NginxWeb服务优化实战(下) 4. Nginx站点目录及文件URL访问控制 4.1 根据扩展名限制程序和文件访问 Web2.0时代,绝大多数网站都是以用户为中心多的,例如:bbs,blog ...
- javascript笔记 (持续更新)
1. 语言主要分为两大类:编译型语言和解释型语言. 对于静态语言来说(如Java.C++.C),处理上述这些事情的叫编译器(Compiler),相应地对于JavaScript这样的动态语言则叫解释器( ...