CI 코드

제목 Codeigniter ORM - easyorm
글쓴이 db 작성시각 2015/05/05 14:51:06
댓글 : 4 추천 : 1 스크랩 : 0 조회수 : 32548   RSS
Codeigniter 에서 ORM를 쓸 수 있도록 하는 코드를 공개합니다.
기존 Datamapper 가 너무 복잡하여 좀 쉽게 썻으면 해서 만들어봤습니다.
자바 JPA 영향을 좀 받아서 어디선가 본듯한 메소드명이 있습니다.;;

코드는 다음주소에서 다음받으실 수 있어요
https://github.com/gahea/easyorm 

반응좋으면 디비를 검색해서 Model을 자동화 하는 것도 공개하겠습니다.

Model
class Usermodel extends MY_Model{

    var $id = 0;
    var $screenname = '';
    var $password = '';
    var $hobbies = array();
    var $regDate = '';
    var $lastDate = '';
    var $regIp = '';


    // 테이블명과 키컬럼을 지정
    // _(언더스코어)로 시작되는 컬럼은 ORM에서 무시함
    var $_key = 'id';
    var $_table = 'user';

    // 데이터가 저장되기전 처리
    public function prepersist(){
      $this->regDate = 'NOW()';
      $this->regIp = $this->input->ip_addresss();
    }

    // 데이터가 업데이트 되기 전 처리
    public function preupdate(){
      $this->lastDate = 'NOW()';
    }

    // 데이터가 삭제되기 전 처리
    public function predelete(){
      log('삭제됨 :' . date('y-m-d h:i:s')'
    }

  }

Controller
class Controll extends CI_Controller{

    public function __construct(){
        $this->load->model('usermodel');
    }

    public function inAction(){


      // 모델에 포스트로 넘어온값 바인딩
      // 2번째 파라미터는 바인딩을 제외하는 컬럼을 지정 (id, 아이피등)
        $this->usermodel->initialize($this->input->post(), array('id'));

      // 저장하기
        $this->usermodel->save();

        redirect('/user/'.$this->usermodel->id);

    }

    public function view($id){

      // 키값으로 데이터 조회
      // 조회후 값이 $this->usermodel에 바인딩 됨
        $this->usermodel->get($id);    

        $this->load->view('view',array('user' => $this->usermodel);

    }

    public function upAction(){

        $this->usermodel->get($this->input->post('id'));
        $this->usermodel->initialize($this->input->post(), array('id'));

      // 업데이트
      // 업데이트 preupdate() 함수를 체크하여 사전 처리 진행
      // 2번째 파라미터는 업데이트를 할 컬럼을 지정 (지정안하면 전체 컬럼 업데이트)
        $this->usermodel->update(array('password'));

    }

    public function deleteAction($id){

      // 데이터 호출하기
        $this->usermodel->get($id);

      // 객체를 삭제하기
        $this->usermodel->delete();

        redirect('user');
    }

}
 다음글 폼메일이나 데이타입출력시스템을 쉽게 만드는 폼빌더 (3)
 이전글 슘님의 커스텀 페이지네이션 라이브러리 CI ver. 3... (4)

댓글

방문넷 / 2015/05/06 01:51:07 / 추천 0
와우 소중한 코드 감사합니다 그렇지않아도 ORM에 대해서 공부 중이었는데

좋은 코드를 공개해주셔서 한결 맘이 가벼워진 거같습니다 일단 추천드립니다!
db / 2015/05/06 02:58:54 / 추천 0
ci 2.0 나오면서 만든 코드인데 여지것 그냥 쓰고 있는게 한심해서 공개했습니다.
도움되었다니 몸들바를 모르겠습니다.
 
한대승(불의회상) / 2015/05/06 09:15:13 / 추천 0
datamapper가 복잡해서 저도 사용 안하는데 이번 기회에 ORM에 접근을 해 봐야 겠네요.
좋은 정보 감사합니다.
 
dasider41 / 2016/07/04 12:07:59 / 추천 0

최근에 찾아보니 https://github.com/illuminate/database 도 있더군요

composer로 설치시면 되고, 사용법은 larvel document를 참고하시면 됩니다.