You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							197 lines
						
					
					
						
							6.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							197 lines
						
					
					
						
							6.2 KiB
						
					
					
				
								<?php
							 | 
						|
								defined('BASEPATH') OR exit('No direct script access allowed');
							 | 
						|
								/**
							 | 
						|
								 *
							 | 
						|
								 *-------------------------------------------------------------
							 | 
						|
								 * WB_Model
							 | 
						|
								 *-------------------------------------------------------------
							 | 
						|
								 * CI_Model 를 확장합니다.
							 | 
						|
								 */
							 | 
						|
								class WB_Model extends CI_Model
							 | 
						|
								{
							 | 
						|
								    protected $_table 	= NULL;
							 | 
						|
								    protected $_pk		= NULL;
							 | 
						|
								    protected $_status	= NULL;
							 | 
						|
								
							 | 
						|
								    function __construct()
							 | 
						|
								    {
							 | 
						|
								        parent::__construct();
							 | 
						|
								        $this->load->database();
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * PK값으로 검색하여 한 행을 반환합니다.
							 | 
						|
								     */
							 | 
						|
								    function get_one( $param=array())
							 | 
						|
								    {
							 | 
						|
								        $param['idx']       = element('idx', $param);
							 | 
						|
								        $param['column']    = element('column', $param, $this->_pk);
							 | 
						|
								        $param['select']    = element('select', $param, '*');
							 | 
						|
								        $param['from']      = element('from', $param, $this->_table);
							 | 
						|
								        $param['where']     = element('where', $param);
							 | 
						|
								        $param['limit']     = element('limit', $param, 1);
							 | 
						|
								
							 | 
						|
								        if(! $param['idx']) return FALSE;
							 | 
						|
								
							 | 
						|
								        $this->db->select($param['select']);
							 | 
						|
								        $this->db->from( $param['from'] );
							 | 
						|
								        $this->db->where( $param['column'], $param['idx'] );
							 | 
						|
								
							 | 
						|
								        // WHERE 조건이 들어있을경우
							 | 
						|
								        if( is_array($param['where']) && !empty($param['where']) && count($param['where']) > 0 )
							 | 
						|
								        {
							 | 
						|
								            foreach($param['where'] as $key => $val)
							 | 
						|
								            {
							 | 
						|
								                $this->db->where($key, $val);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // 기본적으로 한줄만 가져온다.
							 | 
						|
								        $this->db->limit( $param['limit'] );
							 | 
						|
								
							 | 
						|
								        $result = $this->db->get();
							 | 
						|
								
							 | 
						|
								        if( $result->num_rows() > 0 )
							 | 
						|
								        {
							 | 
						|
								            return $result->row_array();
							 | 
						|
								        }
							 | 
						|
								        else
							 | 
						|
								        {
							 | 
						|
								            return FALSE;
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    function get_list( $param = array() )
							 | 
						|
								    {
							 | 
						|
								        $param['select'] 	= ( isset($param['select']) && $param['select'] ) ? $param['select'] : "*";
							 | 
						|
								        $param['from']		= ( isset($param['from']) && $param['from'] ) ? $param['from'] : $this->_table;
							 | 
						|
								        $param['join']		= ( isset($param['join']) && $param['join'] && is_array($param['join']) ) ? $param['join'] : NULL;
							 | 
						|
								        $param['page']		= ( isset($param['page']) && $param['page'] ) ? $param['page'] : 1;
							 | 
						|
								        $param['page_rows']	= ( isset($param['page_rows']) && $param['page_rows'] ) ? $param['page_rows'] : 15;
							 | 
						|
								        $param['order_by']	= ( isset($param['order_by']) && $param['order_by'] ) ? $param['order_by'] : $this->_pk . " DESC";
							 | 
						|
								        $param['where']		= ( isset($param['where']) && $param['where'] && is_array($param['where']) ) ? $param['where'] : NULL;
							 | 
						|
								        $param['where_in']	= ( isset($param['where_in']) && $param['where_in'] && is_array($param['where_in']) ) ? $param['where_in'] : NULL;
							 | 
						|
								        $param['sc']		= ( isset($param['sc']) && $param['sc'] ) ? $param['sc'] : NULL;
							 | 
						|
								        $param['st']		= ( isset($param['st']) && $param['st'] ) ? $param['st'] : NULL;
							 | 
						|
								        $param['limit']		= ( isset($param['limit']) && $param['limit'] ) ? $param['limit'] : FALSE;
							 | 
						|
								
							 | 
						|
								        $param['start']		= ( $param['page'] -1 ) * $param['page_rows'];
							 | 
						|
								        $this->db->select("SQL_CALC_FOUND_ROWS " . $param['select'], false );
							 | 
						|
								        $this->db->from( $param['from'] );
							 | 
						|
								
							 | 
						|
								        // 사용자 정의 WHERE 문 처리
							 | 
						|
								        if( $param['where'] && is_array($param['where']) )
							 | 
						|
								        {
							 | 
						|
								            foreach($param['where'] as $key=>$val)
							 | 
						|
								            {
							 | 
						|
								                $this->db->where($key, $val);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // 사용자 정의 WHERE_IN 문 처리
							 | 
						|
								        if( $param['where_in'] && is_array($param['where_in']) )
							 | 
						|
								        {
							 | 
						|
								            foreach($param['where_in'] as $key=>$val)
							 | 
						|
								            {
							 | 
						|
								                $this->db->where_in($key, $val);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // 사용자 정의 WHERE 문 처리
							 | 
						|
								        if( $param['join'] && is_array($param['join']) )
							 | 
						|
								        {
							 | 
						|
								            foreach($param['join'] as $array)
							 | 
						|
								            {
							 | 
						|
								                $this->db->join($array[0], $array[1], $array[2]);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        // 검색어 처리
							 | 
						|
								        if( $param['sc'] != NULL && $param['st'] !=NULL )
							 | 
						|
								        {
							 | 
						|
								            // 띄어쓰기로 분리해서 각각 like를 걸어준다.
							 | 
						|
								            $st = explode(" ", $param['st']);
							 | 
						|
								            foreach($st as $searchs)
							 | 
						|
								            {
							 | 
						|
								                $this->db->like($param['sc'], $searchs);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        if($param['limit'] === TRUE)
							 | 
						|
								        {
							 | 
						|
								            $this->db->limit( $param['page_rows'], $param['start'] );
							 | 
						|
								        }
							 | 
						|
								        $this->db->order_by( $param['order_by'] );
							 | 
						|
								
							 | 
						|
								        $result = $this->db->get();
							 | 
						|
								        if(! $result ) {
							 | 
						|
								            echo "ERROR : ".$this->db->error()['message'].PHP_EOL."<br>";
							 | 
						|
								            echo "QUERY : ".$this->db->last_query();
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        if(IS_TEST) {
							 | 
						|
								            $return['query'] = $this->db->last_query();
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        $return['list'] = $result->result_array();
							 | 
						|
								
							 | 
						|
								        $result = $this->db->query("SELECT FOUND_ROWS() AS `cnt`");
							 | 
						|
								        $return['total_count'] = (int) $result->row(0)->cnt;
							 | 
						|
								        $return['total_page'] = ceil($return['total_count'] / $param['page_rows'] );
							 | 
						|
								
							 | 
						|
								        $num = 0;
							 | 
						|
								        foreach($return['list'] as &$row)
							 | 
						|
								        {
							 | 
						|
								            $row['nums'] = $return['total_count'] - $num - $param['start'];
							 | 
						|
								            $num++;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        return $return;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    function create( $param = NULL )
							 | 
						|
								    {
							 | 
						|
								        foreach( $param as $k => $v )
							 | 
						|
								        {
							 | 
						|
								            $this->db->set( $k, $v );
							 | 
						|
								        }
							 | 
						|
								        $this->db->from($this->_table);
							 | 
						|
								        $this->db->insert();
							 | 
						|
								
							 | 
						|
								        $pk = $this->db->insert_id();
							 | 
						|
								
							 | 
						|
								        return $this->get_one($pk);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    function update( $param = NULL, $idx = NULL , $debug = FALSE)
							 | 
						|
								    {
							 | 
						|
								        foreach( $param as $k => $v )
							 | 
						|
								        {
							 | 
						|
								            $this->db->set( $k, $v );
							 | 
						|
								        }
							 | 
						|
								        $this->db->from($this->_table);
							 | 
						|
								        $this->db->where($this->_pk, $idx);
							 | 
						|
								        $this->db->update();
							 | 
						|
								
							 | 
						|
								        if( $debug ) {
							 | 
						|
								            return $this->db->last_query();
							 | 
						|
								        }
							 | 
						|
								        return $this->get_one($idx);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    function update_batch($data)
							 | 
						|
								    {
							 | 
						|
								        return $this->db->update_batch($this->_table, $data, $this->_pk);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    function insert_batch($data)
							 | 
						|
								    {
							 | 
						|
								        return $this->db->insert_batch($this->_table, $data);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    function delete( $idx )
							 | 
						|
								    {
							 | 
						|
								        $this->db->where($this->_pk, $idx);
							 | 
						|
								        $this->db->set($this->_status, "N");
							 | 
						|
								        $this->db->update($this->_table);
							 | 
						|
								    }
							 | 
						|
								}
							 |