개발 Q&A

제목 어떤식으로 모델을 구성, 구조를 잡을지,, 조언 부탁드려용 ㅠ
카테고리 PHP
글쓴이 neo천 작성시각 2018/11/12 12:06:58
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 9709   RSS

모델의 구조? 구성을 어떻게 잡는게 좋을지?,, 조언이 필요합니다 ㅠ

혼자 만들다보니 조언을 구할때가 없어서 문의를 남깁니다.

 

일단은 제가 예전에 썼던 모델의 구조입니다.

//부모클래스class CI_ArBuilder extends CI_Model {

    protected $table = "";

    function __construct($table) {        parent::__construct();        $this -> table = $table;    }

    private function selectSql($select) {        if ($select != '') {            $this -> db -> select($select);        }    }

    public function qeuryBinding($sql, $arrData, $arrWhere) {       

       $this -> db -> where($arrWhere);       

       $query = $this -> db -> query($sql, $arrData);        return $query -> result_array();   

    }

   public function insertDbData($arrData) {       

       $result = $this -> db -> insert($this -> table, $arrData);        return $result;    } 

   public function updateDbData_batch($arrData, $whereColumn) {       

        $result = $this -> db -> update_batch($this -> table, $arrData, $whereColumn);        return $result;    }     

   

........

   ........    //이하 10~20개의 AR관련 메소드가있습니다.       

}

 

 

//자식클래스class User_model extends CI_ArBuilder {

    public function __construct() {       

           // Call the CI_ArBuilder constructor       

          parent::__construct('USER_INFO');   

    }

}

요런식으로 테이블('USER_INFO')마다 담당모델클래스(User_model)를 만들어주고 부모클래스(CI_ArBuilder)를 상속받아서 썻습니다.이때는 정규화 이런거 신경을 안쓰던터라 join을 쓸 필요가없어서 잘 사용하고있었습니다.

=========================================================

요즘에는 이런 구조에 문제점이 많다는 걸 생각했습니다.

(join(두 테이블이상)일때, 어떤 자식클래스에 메소드를 추가하는가? /  CI_ArBuilder의 메소드로 보통 처리가 다 되어서불필요한 자식클래스가 많아지는것(테이블 갯수 = 클래스갯수) )

=========================================================

조인을 사용할 경우가 많아지고, 테이블(약70~90)이 많아지니, 어떤 식으로 구조를 잡고쓸지 감이 안잡힙니다.

경험이나, 현재사용하시는 구조에 대해 얘기해주시거나, 팁을 알려주시면 감사하겠습니다.

조언 부탁드립니다! 항상감사합니당

 다음글 ajax를 이용한 페이지 이동 (2)
 이전글 지금 시점에 서비스 개발시 ci3 , ci4 어떤걸 추... (4)

댓글

변종원(웅파) / 2018/11/12 12:33:27 / 추천 0

저는 확장 고려해서 AR을 직접 사용하는 형태로 씁니다. 

AR도 어떻게 보면 Wrapper 인데 그걸 또 Wrapper 형태로 감쌀 필요가 있을까 하는게 제 생각이라서요.  

neo천 / 2018/11/12 13:36:07 / 추천 0

그럼 웅파님, 각 테이블별로 모델클래스를 만드는 부분은 비효율적일까요?, 모델 구조를 어떤식으로 잡고 가는게 확장성이나, 유용하게 쓸수있을지...조언 부탁드립니다 ㅠ

예를들어 테이블별로 클래스를 나누지않고, 다른 방법을 쓴 경우는 어떤 방식이었는지...등등 ㅠㅠ

경험이 부족해서,, 감이 너무안옵니다..

변종원(웅파) / 2018/11/12 17:38:44 / 추천 0

neo천/ 저는 컨트롤러에 대응되도록 모델을 만듭니다. 컨트롤러는 메뉴 또는 기능단위로 만들구요.

컨트롤러가 커지면 쪼개고 그때 모델도 분리합니다. 

ERD가 있으면 굳이 테이블 단위로 대응하는 모델을 만들지않고 관리를 할 수 있습니다. 

테이블단위로 관리하려고 하는 이유가 있을까요?

neo천 / 2018/11/13 09:30:05 / 추천 0

테이블 단위로 관리하려는 이유는 없구 아마도, 제가 경험이 부족하다보니 그렇게 구조가 잡힌것같습니다

(다른 방법을 모르니,, 생각을 하고 고민해도 아는게 한정되다보니 그렇네요 ㅠ)

웅파님 답변을 참고하여 좀더 고민해보겠습니다!