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等文档格式 ...
随机推荐
- 高水线 High water mark(HWM)
所有的Oracle表都有一个容纳数据的上限(很像一个水库历史最高的水位),我们把这个上限称为“High water mark"或HWM.这个HWM是一个标记(专门有一个数据块来记录高水标记等 ...
- Intellij IDEA 安装Scala插件 + 创建Scala项目
一.IDEA 2018 Ultimate edition (旗舰破解版下载地址) 百度网盘地址:https://pan.baidu.com/s/1d9ArRH6adhDUGiJvRqnZMw 二.I ...
- LeetCode题:旋转链表
原题: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2输出: ...
- apache虚拟主机配置及解析
Apache虚拟主机配置及解析 1.修改httpd-vhosts.conf 打开apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虚拟主机信息,可以这 ...
- linux中常用的命令大全
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...
- js中函数的创建和调用都发生了什么?执行环境,函数作用域链,变量对象
博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/26/js%E4%B8%AD%E5%87%BD%E6%95%B0%E7%9A%84%E ...
- shiro安全框架的使用流程
最近学了shiro安全框架流程,在这里梳理一下shiro的工作流程和一些代码,方便以后使用的时候,能快速找到对应的代码. 要使用这个shiro框架,还要新建两张表 t_authority(权限表)和t ...
- android 拖拉和放大
public class MainActivity extends Activity { private ImageView imageView; @Override public void onCr ...
- wordpress 添加 显示磁盘剩余空间百分比的插件
在 wp-content/plugins 文件夹下 我取的文件名是: folder-sizes-dashboard-widget.php 在仪表盘 可以看到 Folder Sizes 标题的Box & ...
- Case Closed?
Finally, we'll want a way to test whether a file we've opened is closed. Sometimes we'll have a lot ...