zoukankan      html  css  js  c++  java
  • CI公用模型

    <?php   if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    /**
     * SEO管理系统 -- 公用模型
     * @author yangheping
     * @since  2013/11/11
     */
    class Common_model extends CI_Model{
       
        
        public function __construct() 
        {
            parent::__construct();
            $this->load->database();
        }    
      
        
        /**
         * 分页数据查询
         * 功能:
         * 一、查询条件分页总数
         * 二、查询条件分页数据信息
         * @param string $table      表名称
         * @param array  $param      查询条件:  
         *                                  array($key => $val) $key为要操作的字段,$val为要操作的值
         * @param string $type       为total返回总数,range为返回对应数据 
         * @param string $show_field 为需要查询的字段 
         * @param array  $order      排序条件:   
         *                                  array($key => $val)
         *                                  $key为排序依据的字段,
         *                                  $val为排序的方式【asc (升序,默认)或 desc(降序), 或 random(随机)】 
         * @return int 或 array 
         */
        public function pageData($table = '', $param = array(), $type = 'total', $show_field = '*', $order = array())
        {
    
            if(empty($table))
            {
                return FALSE;            
            }
    
            $limit      = (int)$param['limit'];
            $page       = (int)$param['page']; //开始查询的ID,在CI分页中
    
            $not_table_column_arr = array('limit', 'page');
    
            //处理查询条件的组合
            if (!empty($param) && is_array($param)) {
                foreach($param as $key => $val){
                    if(!empty($val) && ($val != 'n') && !in_array($key, $not_table_column_arr))
                    {
                        $this->db->where($key, $val);                         
                    }
                }
            }
    
            //排序规则的组合
            if (!empty($order) && is_array($order))
            {
                foreach ($order as $key => $val)
                {
                    $this->db->order_by($key, $val);
                }
            }else{ //默认按照此表的主键倒序
                $primary_arr = $this->getPrimary('hf_seo', $table);
                if(!empty($primary_arr))
                {
                    $this->db->order_by($primary_arr[0]->COLUMN_NAME, 'DESC');
                }
            }
            
                           
            $this->db->select($show_field)
                     ->from($table);  
    
            //求条件下总数
            if( $type == 'total' )
            {  
                return $this->db->count_all_results();
            }  
            
            //返回当前分页数据
            if( $type == 'range' )
            { 
                //分页边界值 设置
                $limit_start = $page <= 1 ? 0 : ($page-1)*$limit;
                $this->db->limit($limit, $limit_start);
                $query = $this->db->get();  
    //            return $this->db->last_query();  //返回组合后的SQL语句
                return $query->result_object();
            }
            
            return FALSE;
        }
            
        
       /**
         * 新增信息
         * @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);
           
            //返回记录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);        
            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);
           
           return $this->db->affected_rows();      
        }
        
        
       /**
         * 多字段条件查询数据     
         * @param string    $table      表名称
         * @param array     $param      查询条件:
         *                                  array($key => $val) $key为要操作的字段,$val为要操作的值
         * @param int       $limit      数据数目
         * @param int       $offset     开始位置
         * @param string    $show_field 要显示字段
         * @param array     $order      排序条件:   
         *                                  array($key => $val)
         *                                  $key为排序依据的字段,
         *                                  $val为排序的方式【asc (升序,默认)或 desc(降序), 或 random(随机)】                             
         * @return array|boolean 
         */
        public function search($table = '', $param = array(), $limit = null, $offset = null, $show_field = '*', $order = array()) 
        {
            if(empty($table))
            {
                return FALSE;            
            }
             
            $this->db->select($show_field);
    
            if (is_array($param) && count($param) > 0)
            {            
                foreach ($param as $key => $val)
                {
                    if (!empty($key))
                    {
                        $this->db->where($key, $val);
                    }
                }
            }
            
            if (!empty($order) && is_array($order))
            {
                foreach ($order as $key => $val)
                {
                    $this->db->order_by($key, $val);
                }
            }
    
            if( is_numeric($limit) )
            {
                $limit = intval($limit);                
            } else {
                $limit = null;
            }
    
            if( is_numeric($offset) )
            {
                $offset = intval($offset);
            } else{
                $offset = null;
            }
    
            $query = $this->db->get($table, $limit, $offset);
            return $query->num_rows() > 0 ? $query->result_object() : FALSE;
            
            return FALSE;
        }
    
    
        /**
         * 获取表的主键
         * @param string    $database   数据库名称
         * @param strting   $table      表名称
         */
        public  function getPrimary($database = '', $table = '')
        {
            if(empty($database) || empty($table))
            {
                return FALSE;
            }
    
            $this->db->select('c.COLUMN_NAME')
                     ->from('INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t')
                     ->join('INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c', 't.TABLE_NAME = c.TABLE_NAME' , 'left')
                     ->where('t.TABLE_SCHEMA', $database)
                     ->where('t.TABLE_NAME',  $table)
                     ->where('t.CONSTRAINT_TYPE', 'PRIMARY KEY');
    
            $query = $this->db->get();
            return $query->result_object();
        }
        
    }
    
    /* End of file Common_model.php */
    /* Location: ./application/models/admin/Common_model.php */
  • 相关阅读:
    js中disabled属性
    ajax 失焦点局部刷新 判断是否存在
    java 常见异常总结
    struts2+spring+hibernate 分别是做什么?
    武汉·骑行·摄影
    [转]基于粒子滤波的物体跟踪
    [转]Chrome插件:下载YouTube视频
    windows下GSL的配置
    图像处理和计算机视觉中的经典论文
    终于在我电脑上跑通ZK大神给的TLD代码了
  • 原文地址:https://www.cnblogs.com/whoamme/p/3417836.html
Copyright © 2011-2022 走看看