ThinkPHP5实用的数据库操做方法

一、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"), ]);


 

 二、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();


 三、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);

 四、链式查询spa

//往分页查询的结果集内添加数据,适用于须要使用关联表查询到的数据再作另外的查询并存入数据集
    $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(); //获取分页查询结果集合并将结果集合转换为数组(包含分页信息)
相关文章
相关标签/搜索