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