国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - CI框架(CodeIgniter)公共模型類定義與用法示例

CI框架(CodeIgniter)公共模型類定義與用法示例

2021-06-15 14:13kangjianrong PHP教程

這篇文章主要介紹了CI框架(CodeIgniter)公共模型類定義與用法,結合具體實例形式分析了CI框架公共模型類的定義以及基于公共模型類操作數據庫的相關實現技巧,需要的朋友可以參考下

本文實例講述了CI框架(CodeIgniter)公共模型類定義與用法。分享給大家供大家參考,具體如下:

我們都知道,操作數據庫的方法都寫在模型中。但是一般情況下,一張表往往至少對應4個操作,也就是所謂crud。那么如果20張表,所對應的模型方法,就達到了80個,重復的操作顯然這已經是一個體力活兒。

那么就對單表操作時,我們進行一下簡單的封裝。如下是ci框架的示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<?php
/**
 * Created by PhpStorm.
 * User: kangjianrong
 * Date: 16-8-26
 * Time: 上午10:29
 */
class My_model extends CI_Model {
  //數據庫
  public $errors = array();
  const dataBase = 'qndnew';
  public function __construct()
  {
    // Call the CI_Model constructor
    parent::__construct();
  }
  /**
   * 查詢分頁數據(使用于簡單的單表操作)
   * @param string $model 模型     例如:User_model
   * @param string $table 表名
   * @param string $select_fields 要顯示字段
   * @param array $param 查詢條件:
   *   compare(比較):
   *     array($key => $val) $key為要操作的字段,$val為要操作的值
   *     array('name !=' => $name, 'id <' => $id, 'date >' => $date);
   *   like(模糊查詢)
   *     array('title' => $match, 'page1' => $match, 'page2' => $match)
   *   customStr(自定義字符串):
   *     "name='Joe' AND status='boss' OR status='active'"
   *   in:
   *     array('userName' => array('Frank', 'Todd', 'James'))
   * @param string $page 當前頁數(查詢全部數據時,設置為空)
   * @param string $limit 查詢條數(查詢全部數據時,設置為空)
   * @param array $order 排序條件:
   *   array($key => $val)
   *   $key為排序依據的字段,
   *   $val為排序的方式【asc (升序,默認)或 desc(降序), 或 random(隨機)】
   * @$isReturnCount boole    是否返回總條數
   * @return array|boolean
   *
   */
  public function pageData($model, $table, $param = array(),$select_fields = '', $page = '1', $limit = '15', $order = array(),$isReturnCount = true){
    if(empty($model) || empty($table)){
      return false;
    }
    $this -> load -> model($model);
    $table = $this->db->dbprefix.$table;
    //處理查詢字段
    if(!empty($select_fields)){
      $this->db->select($select_fields)->from($table);
    }elseif(isset($this -> $model -> selectFields)){
      $this->db->select($this -> $model -> selectFields)->from($table);
    }else{
      $this->db->select('*')->from($table);
    }
    //處理查詢條件
    if (is_array($param) && count($param) > 0){
      $this -> parseParam($param);
    }
    //統計總數
    if($isReturnCount){
      $rs['count']  = $this->db->count_all_results('',false);//不重置查詢構造器
      array_push($this -> errors,$this->db->last_query());
    }
    //分頁數據處理
    if(isset($page) && isset($param['limit'])){
      //分頁邊界值 設置
      $offset = $param['page'] <= 1 ? 0 : ($param['page']-1) * $param['limit'];
      $this->db->limit($param['limit'], $offset);
    }
    //排序規則的組合
    if (!empty($order) && is_array($order))
    {
      foreach ($order as $key => $val)
      {
        $this->db->order_by($key, $val);
      }
    }else{
      //默認按照此表的主鍵倒序
      $primary = $this->getPrimary();
      if(!empty($primary))
      {
        $this->db->order_by($primary, 'DESC');
      }
    }
    $query = $this->db->get();
    array_push($this -> errors,$this->db->last_query());
    $rs['list'] = $query->result_array();
    return $rs;
  }
  /**
   * 解析參數
   */
  private function parseParam($param){
    if(isset($param['compare'])){
      foreach ($param['compare'] as $key => $val){
        if (!empty($val)) $this->db->where($key, $val);
      }
    }
    if(isset($param['like'])){
      foreach ($param['like'] as $key => $val){
        if (!empty($val)) $this->db->like($key, $val);
      }
    }
    if(isset($param['in'])){
      foreach ($param['in'] as $key => $val){
        if (!empty($val)) $this->db->where_in($key, $val);
      }
    }
    if(isset($param['customStr'])){
      if (!empty($val)) $this->db->where($param['customStr']);
    }
  }
  /**
   * 新增信息
   * @param string $table 表名稱
   * @param array $param 數據變量
   * @return INT ID
   */
  public function add($table = '', $param = array())
  {
    if(empty($table) || !is_array($param) || empty ($param)){
      return FALSE;
    }
    //寫入數據表
    $this->db->insert($table, $param);
      array_push($this -> errors,$this->db->last_query());
    //返回記錄ID
    return $this->db->insert_id();
  }
  /**
   * 更新分類信息
   * @param string  $table   表名稱
   * @param string  $primary  表主鍵
   * @param int    $id     分類ID
   * @param array   $param   更新的數據
   * @return type
   */
  public function update($table = '', $primary = '', $id = 0, $param = array())
  {
    if(empty($table) || empty($primary) || empty($param) || empty($id))
    {
      return FALSE;
    }
    $id = (int)$id;
    $this->db->where($primary, $id)
         ->limit(1)
         ->update($table, $param);
    array_push($this -> errors,$this->db->last_query());
    return $this->db->affected_rows();
  }
  /**
   * 刪除指定ID記錄
   * @param string  $table   表名稱
   * @param string  $primary  表主鍵
   * @param array   $id     分類ID
   * @return int
   */
  public function delete($table = '', $primary = '', $id = array()){
    if(empty($table) || empty($primary) || empty($id)){
      return FALSE;
    }
    $this->db->where_in($primary, $id)
        ->delete($table);
    array_push($this -> errors,$this->db->last_query());
    return $this->db->affected_rows();
  }
  /**
   * 獲取表的主鍵
   * @param string  $database  數據庫名稱
   * @param strting  $table   表名稱
   */
  public function getPrimary($table = '', $database = self::dataBase)
  {
    if(empty($database) || empty($table))
    {
      return FALSE;
    }
    $sql = "SELECT k.column_name
        FROM information_schema.table_constraints t
        JOIN information_schema.key_column_usage k
        USING (constraint_name,table_schema,table_name)
        WHERE t.constraint_type='PRIMARY KEY'
         AND t.table_schema='qndnew'
         AND t.table_name='qnd_user'";
    $query = $this->db->query($sql)->result_array();
    return isset($query[0]['column_name']) ? $query[0]['column_name'] : false;
  }
  /**
   * debug sql語句
   */
  public function debugSql(){
    if(count($this->errors) > 0){
      foreach($this->errors as $val){
        echo $val.'<br>';
      }
    }
  }
}

具體的業務邏輯模型如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class User_model extends My_model {
  const USER = 'qnd_user';
  public $selectFields = array(
    'id',
    'guid',
    'phone',
    'userName',
    'password',
    'headPortraits',
    'nickName',
    'createTime',
  );
  const SMS_ROLE = 'qnd_role';
  public function __construct()
  {
  }
}

控制器中測試如下:

?
1
2
3
4
5
6
7
8
9
10
11
public function modelTest(){
    $this -> load -> model('User_model'); // 載入 model
    $whereArr = array(
            'compare'=>array(
              'userName' => 'Frank',
            ),
          );
    $rs = $this -> User_model -> pageData('User_model','user',$whereArr);
    print_r($rs);
    $this -> User_model -> debugSql();
  }

希望本文所述對大家基于CodeIgniter框架的PHP程序設計有所幫助。

原文鏈接:http://www.cnblogs.com/kangjianrong/p/5865442.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲一区二区三区中文字幕 | 国产日韩欧美在线观看 | 99精品一区二区三区 | 日韩一区在线观看视频 | 青草福利 | 黄色免费在线观看 | 色五月激情综合网 | 亚洲 精品 综合 精品 自拍 | 日韩成人在线网 | 欧美一区二区在线视频 | 91精品国产综合久久久久久 | 九九综合 | 欧美在线不卡视频 | 国产高清精品在线 | 五月婷综合 | 精品久久久久一区二区国产 | 91仓库| 国产成人精品免费视频大全最热 | 在线观看日韩av | 久久伊人久久 | 中文字幕 亚洲一区 | 国内精品久久久久久久97牛牛 | 亚洲欧洲综合 | 欧美日韩在线一区二区三区 | 一区二区日韩精品 | 日韩在线资源 | 日韩中文字幕在线 | 9191国产视频 | 韩国精品一区二区三区 | av观看| 欧美 日韩 成人 | 欧美国产精品一区 | 午夜久久久久 | 久久成人综合网 | 日本精品一区二区三区视频 | 中日韩一线二线三线视频 | 亚洲男人一区 | 日操| 九九精品视频在线 | 久青草视频在线 | 欧美日韩高清 |