TIP게시판

제목 요즘 쓰고 있는 모델 기본 포맷 입니다.
글쓴이 맥스 작성시각 2015/01/08 13:33:19
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 13758   RSS
<?php
class Model_name extends CI_Model
{
	function __construct()
	{
		parent::__construct();

		define( '_TBL', strtolower( get_called_class() ) );
	}

	function get_list( $param = NULL )
	{
		$this->db->select( "SQL_CALC_FOUND_ROWS *", false );

		if( !isset( $param['page'] ) )
		{
			$param['page'] = 1;
		}

		$this->db->order_by('idx DESC');

		if( isset( $param['limit'] ) )
		{
			$result = $this->db->get( _TBL, $param['limit'], ( ( $param['page'] - 1 ) * $param['limit'] ) );
		}
		else
		{
			$result = $this->db->get( _TBL );
		}

		$return['list'] = $result->result_array();

		$result = $this->db->query( "SELECT FOUND_ROWS() as cnt" );
		$return['count'] = $result->row( 0 )->cnt;

		return $return;
	}

	function get_one( $idx = NULL )
	{
		$this->db->where( 'idx', $idx );
		$result = $this->db->get( _TBL );
		if( $result->num_rows() > 0 )
		{
			return $result->row_array();
		}
		else
		{
			return false;
		}
	}

	function create( $param = NULL )
	{
		foreach( $param as $k => $v )
		{
			$this->db->set( $k, $v );
		}
		$this->db->insert( _TBL );

		return $this->db->insert_id();
	}

	function update($idx = NULL, $param = NULL)
	{
		foreach( $param as $k => $v )
		{
			$this->db->set( $k, $v );
		}
		$this->db->where( 'idx', $idx );
		$this->db->update( _TBL );  
	}
}
이걸 snippet으로 등록해서 사용합니다.
 다음글 PHPExcel사용방법 (6)
 이전글 Codeigniter 2.1.4, php 5.6 에서 ... (3)

댓글

한대승(불의회상) / 2015/01/08 14:44:14 / 추천 0
좋은 정보 감사 합니다.
core/MY_Model.php 에 집어넣고 확장을 MY_Model로 하면 snippet 보다 조금 더 유연해 지더군요.
변종원(웅파) / 2015/01/08 15:16:52 / 추천 0
기본셋이네요. ^^
누구야 / 2015/01/15 14:13:26 / 추천 0
좋은 정보 감사합니다!!~
미남xa / 2015/02/25 16:52:53 / 추천 0
get_called_class() 을 사용할 경우에는 테이블이름하고 클래스 이름을 맞춰서 사용하나요?

 
한대승(불의회상) / 2015/02/25 17:04:31 / 추천 0
흠... 예전엔 그냥 지나쳣었는데...
_TBL 로 선언된 값이 2개 이상의 모델을 로드 했을때 문제가 생길수 있을것 같네요.
미남xa / 2015/02/25 17:38:42 / 추천 0
2개이상의 모델도 그렇고, CI는 사용한지 얼마 되지 않았는데 CI권장이 1모델 1테이블 접근을 권장하나 해서요..
한대승(불의회상) / 2015/02/25 18:02:43 / 추천 0
미남xa// 권장은 아니지만 관리하기는 편하더군요.
join 들어가면 관리 차원의 문제는 아닌것 같군요. ^^
CI는 쿼리빌더를 액티브레코드라고는 이름 지은  거라 ORM을 지원하지는 않으니까요.