질문
Q #10937
CI 모델 구조와 쿼리 방식에 대해서 문의드리겠습니다.
가내수공업개발자
2013-11-14 04:05:25
CI를 이용해볼까해서 메뉴얼을 1독하고 질문하는 것이니 너무 멍청하다고 욕하지 말아주세요.
1. MODEL 은 꼭 필요할까요?
DB에 데이터는 이미 있고, 그 데이터를 가져와서 보여주는 사이트입니다. MODEL 이 꼭 필요할까요?
2. Query는 어떤 방식으로 날리는게 효과적인가요? 특히 select.
메뉴얼에 보면
$this->db->query('YOUR QUERY HERE');
이렇게 직접 쿼리를 날리는 방식이 있고,
$query = $this->db->get('mytable');
이렇게 get 으로 가져오는 방식이 있던데 어떤 방식이 좋은가요?
위에껀 디테일하게 제가 컨트롤 할 수 있을 것 같은데, 코드가 좀 지저분해질것 같고,
아래껀 세밀하게 컨트롤 할려면 CI 메뉴얼을 더 뒤적 겨려야 할것 같습니다만, 일반적으로 어떤 방식이 선호되나요?
3. MODEL은 어느 부분까지 말들어야 합니까?
예를 들어서 다른 플랫폼처럼 MODEL 부분에 레코드와 필드타입까지 다 지정해서 model에서 데이터베이스 생성, 삽입, 조회 다 가능하고 꼭 model을 통해서만 데이터에 접근이 가능한것인가요?
아니면 그냥 일반 MVC 모델처럼 비즈니스 모델만 model 에서 처리하나요?
즉, Controller 에서 데이터를 가져와서 view에 뿌려도 되지만, 코드가 난잡해지니 model 에서 데이터를 가져오는 코드를 작성해놓고
controller 에서 호출해서 view에 뿌리는 것인가요?
감사합니다.
MVC방식을 이용하겠따는건 MVC방식으로 코딩하겠따는 의미가 되죠..
꼭이란 말은 CI에선 불필요하겠지만(뷰에서도 DB를 불러올수 있으니깐요..)
가능하면 MVC코딩기법에 마춰서 코딩하는게 좋구요~
이유는 코드의 재사용(똑같은 퀴리를 2,3번 사용하게 된다던가..),
코드의 통일화(MVC를 아는 프로그래머라면 쉽게 어디에 뭐가 있는지 알수 있는...)
를 들수 있겠쬬...
2.
가능하면 get방식을 사용하는게 좋습니다.
이유는 직접퀴리는 복잡한 퀴리를 사용할때 사용하겠지만 직접 작성하게 되면
잘못된 쿼리문이나 인젝션공격에 취약해질 우려가 있기 때문이죠..
get방식(액티브레코드)을 가능하면 사용하시는게 좋습니다..
3.
URL로 접근 하면 콘트롤러로 접근하게 됩니다. 즉 기준은 콘트롤러가 되는것이죠...
집속이 되면 콘트롤러에서 잠깐 모델로 가서 데이터를 가져오고
가져온 데이터를 라이브러리에 가서 그 데이터를 가공시켜서 원하는 모양으로 변경한 다음에
다시 콘트롤러에서 그 조작된 데이터를 뷰에 전달 해 주는것이 되겠죠.
그러면 뷰에선 그냥 단순히 조작된 데이터를 echo 하는것이 고요...