Kết quả 1 đến 3 của 3
  1. #1
    CI Member darkearl's Avatar
    Ngày tham gia
    13-05-2014
    Bài viết
    29
    Cảm ơn
    5
    Được cảm ơn 18 trong 10 bài viết

    Sử dụng MY_Model trong codeigniter

    Hi all!
    Có bạn inbox hỏi mình về cách lưu hay thêm mới trong db. Bạn ấy hỏi khi thiết kế back_end hay admin cho web thì tạo mới và cập nhật rất nhiều và phải viết đi viết lại các hàm này trong mỗi model thì có cách nào để chỉ cần viết 1 lần là sử dụng được cho tất cả không?
    Câu trả lời là:
    Thực hiện theo các bước dưới đây nhé:
    Step 1: Tạo file đặt tên MY_Model.php trong thư mục application/core

    PHP Code:
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class 
    MY_Model extends CI_Model {

        public 
    $primaryFilter 'intval'// htmlentities for string keys
        
        
    function __construct() {
            
    parent::__construct();
            
    $this->load->database();
        }
        
    /**
         * Save or update a record.
         * @param string $table_name
         * @param array $data
         * @param mixed $id Optional
         * @param string $primary_key (optional, default = 'ID')
         * @return mixed The ID of the saved record
         * @author darkearl
         */
        
    public function save($table_name$data$id FALSE,$primary_key ='ID') {
            if (
    $id == FALSE) {
                
    // This is an insert
                
    $this->db->set($data)->insert($table_name);
            }
            elseif (
    $id != FALSE && is_array($id)) {
                
    // This is an update follow multi key
                
    $filter $this->primaryFilter;
                
    $this->db->set($data);
                foreach(
    $id as $key => $value){
                    
    $this->db->where($key$filter($value));  
                }
                
    $this->db->update($table_name);
            }
            else { 
                
    // This is an update follow primary key
                
    $filter $this->primaryFilter;
                
    $this->db->set($data)->where($primary_key$filter($id))->update($table_name);
            }
            
            
    // Return the ID
            
    return $id == FALSE $this->db->insert_id() : $id;
        }
    }
    * Giải thích: hàm save sẽ thay thế cho insert và update.
    -Nếu bạn không khai báo $id thì nó hiểu là insert
    -Nếu khai báo có $id thì là update
    + $id không phải mảng thì nó cập nhật theo $primary_key(mặc định là ID)
    + $id là mảng bao gồm key và giá trị thì sẽ cập nhật theo các key trong mảng
    Step 2: Sử dụng
    -Khai báo trong model:
    PHP Code:
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    Class 
    Mtest extends MY_Model  //thay thế cho CI_Model
    {
        public function 
    __construct(){
            
    parent::__construct();
            
    $this->load->database();
        }
    }
    -Trong controller:
    PHP Code:
    <?php 
    if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class 
    Test extends CI_Controller {
        public function 
    __construct(){
            
    parent::__construct();
            
    $this->load->model('Mtest');
        }
        public function 
    index(){
           
    $this->Mtest->save('table',$data); //Thêm mới
           
    $this->Mtest->save('table',$data,$id); //Cập nhật (where ID=$id)
           
    $this->Mtest->save('table',$data,array('ID'=>$id1,'Another_ID'=>$id2)); //Cập nhật (where ID=$id1 and Another_ID = $id2)
        
    }
    }
    HAVE FUN:SugarwareZ-120:

  2. The Following 2 Users Say Thank You to darkearl For This Useful Post:

    tinhphaistc (19-12-2014),Zen Studio (19-12-2014)

  3. #2
    Super Moderator tinhphaistc's Avatar
    Ngày tham gia
    01-03-2013
    Bài viết
    693
    Cảm ơn
    244
    Được cảm ơn 278 trong 210 bài viết
    thanks bạn đã chia sẽ...
    THÔNG TIN HỖ TRỢ DIỄN ĐÀN CODEIGNITER VIỆT NAM
    Email: tinhphaistc@gmail.com

  4. #3
    Moderator vudesign's Avatar
    Ngày tham gia
    23-01-2014
    Bài viết
    324
    Cảm ơn
    22
    Được cảm ơn 45 trong 39 bài viết
    Đã có insert thì phải có delete . show list , find id chứ bác

    PHP Code:
    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    class 
    CI_vdb {    
    public function 
    __construct()    
    {        
          
    $this->CI =& get_instance();    
     }     
    function 
    insert($table,$data)    
    {        
        
    $this->CI->db->insert($table$data);        
         return 
    $this->CI->db->insert_id();    
    }

     function 
    update($table,$data ,$id 0)    
     {       
      if(!
    is_array($id)){            
      if(
    $this->CI->db->insert($table,$data)){                
           return 
    $this->CI->db->insert_id();            
      }else{                
        return 
    FALSE;            
       }                    
       }else{            
       foreach(
    $id as $k => $v) {                
          
    $this->CI->db->where($k$v);                        
       }            
      if(
    $this->CI->db->update($table$data)){                
          return 
    TRUE;            
       }else{                
       return 
    FALSE;            
       }        
      }    
      }
    function 
    delete($table$id)    {       
       if (
    is_array($id))        
      {            
            foreach(
    $id as $k => $v) {                
                
    $this->CI->db->where($k$v);                        
             }            
            if(
    $this->CI->db->delete($table)){                
                   return 
    TRUE;            
              }else{                
             return 
    FALSE;           
              }        
        }else{            
       
    show_error('ID is no Array()');        
        }    
      }              
      function 
    find_by_id($table$id)    {       
         if(!
    is_array($id)) {            show_error('ID is no array');        }else{            foreach($id as $k => $v) {                $this->CI->db->where($k$v);            }            $query $this->CI->db->get($table);            $result $query->row();            return $result;        }    }    function find_by_list($table$id 0$order '')    {        if(is_array($id)) {             foreach($id as $k => $v) {                $this->CI->db->where($k$v);            }                   }        if(is_array($order)){            foreach($order as $k => $v) {                $this->CI->db->order_by($k$v);            }          }                $query $this->CI->db->get($table);        return $query->result();    }
            function 
    find_by_all($table$num$offset,$id =,$field ''$order ''){       if(is_array($id)) {             foreach($id as $k => $v) {                $this->CI->db->where($k$v);            }                  }       if($field != '' && $order != ''){           $this->CI->db->order_by($field$order);       }       return $this->CI->db->get($table$num$offset)->result();    }        function find_by_num($table,$id 0){        if(is_array($id)) {             foreach($id as $k => $v) {                $this->CI->db->where($k$v);            }                   }        $query $this->CI->db->get($table);        return $query->num_rows();            }        function find_by_order($table$value$id 0){        $this->CI->db->select_max($value);        if(is_array($id)) {             foreach($id as $k => $v) {                $this->CI->db->where($k$v);            }                   }        $query $this->CI->db->get($table)->row();        return $query->$value 1;    }    function find_by_max($table,$order '',$key ''){        if(is_array($order)){            foreach($order as $k => $v) {                $this->CI->db->order_by($k$v);            }          }        if(is_array($key)) {             foreach($key as $k => $v) {                $this->CI->db->where($k$v);            }                   }        return $this->CI->db->get($table)->num_rows();    }    function find_by_total($table$id 0){        if(is_array($id)) {             foreach($id as $k => $v) {                $this->CI->db->where($k$v);            }                   }        $query $this->CI->db->get($table);        return count($query->result());            }    
             
        }







    Cái trình soạn code này nó sao sao ý . bỏ code vào nó nhảy lung tung các bác à
    Sửa lần cuối bởi vudesign; 19-12-2014 lúc 06:46 PM.
    Clip hay nhé keke truy cậphttp://ovui.com.vn/" href="http://ovui.com.vn/" target="_blank" rel="nofollow">
    http://ovui.com.v
    n/


Chia sẽ và Bình Luận chủ đề Sử dụng MY_Model trong codeigniter trên facebook

Các từ khóa xuất hiện trên google của chủ đề

Chưa có từ khóa lên top google

Tag của Chủ đề này - Hãy Thêm Tags Để bài viết nhanh lên top google

Quyền viết bài

  • Bạn không thể đăng chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi đính kèm
  • Bạn không thể sửa bài
  •