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(); //獲取分頁查詢結果集合並將結果集合轉換為數組(包含分頁信息)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM