温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

CI框架中怎么定义一个公共模型类

发布时间:2021-07-22 16:37:36 来源:亿速云 阅读:190 作者:Leah 栏目:开发技术

这篇文章给大家介绍CI框架中怎么定义一个公共模型类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

如下是ci框架的示例:

<?php 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>';       }     }   } }

具体的业务逻辑模型如下:

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()   {   } }

控制器中测试如下:

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();   }

关于CI框架中怎么定义一个公共模型类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI