CI 묻고 답하기

제목 페이지네이션 질문입니다.
글쓴이 코드원 작성시각 2012/05/23 16:26:36
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 18203   RSS
 모델에서 조인한 결과물의 쿼리 결과 레코드 수를 어떻게 표현하는지요?

모델에서
$q = "select * from table LEFT JOIN A ON A.id = table.id"
$query = $this->db->query($q);
return $query -> result();
그리고 컨트롤러에서
$data = array();                          
  if($query = $this->board_model->getBySel()){
      $data['records'] = $query;
  } 

$config['base_url'] = "/board/page";
        $config["total_rows"]  = 여기에서 어떻게 표현을 해야하는지;  
        $config["num_links"]  = 10;
        $config["per_page"]  = 20;        
        $config["query_string_segment"] = 'page';
        
        $this->pagination->initialize($config);        
        
        $data["total_rows"] = $config["total_rows"];
        $data["pagination"] = $this->pagination->create_links();
따로 메소드를 만들어서 호출해야 하나요?

아이고...참...

고수님들 알려주세요!!
 다음글 view의 정적페이지 접근 질문드려요 (4)
 이전글 웅파님~~~ 마지막 하나 남았습니다.. 부탁드려요~~ (8)

댓글

변종원(웅파) / 2012/05/23 16:50:23 / 추천 0
http://cikorea.net/user_guide_2.1.0/database/results.html 매뉴얼에서 num_rows() 참고하세요.

따로 만들어도 되고 하나의 함수에서 변수에 따라 전체값을 가져오도록 처리해도 됩니다.
배강민 / 2012/05/23 17:07:35 / 추천 0
추가로 말씀드리자면...

페이징을 하려고 하시는듯한데..

limit 걸어서 한 페이지의 건들만 가져오므로 그 결과에 대해서 num_rows하면 펭이징을 위한 전체 rows는 당연히 가져올 수 없고요

limit없는 전체 rows 갯수를 따로 가져와야합니다.

뭐.. 아니면 쿼리 한방에 전체 rows와 페이징을 위한 부분만 같이 가져올수도 있기도할겁니다.. 쿼리 좀 만지작거리면. 해보진 안했지만요..ㅋ

하지만, 다들 아시겠지만 limit만 없애서 가져오고 num_rows를 하면 느릴 수 밖에 없습니다. 일단 전부 불러오고서 갯수를 세는거니..

count() 를 이용한 전체갯수용 쿼리 따로 날려서 빠르게 총 갯수를 가져오도록 하는 것을 추천합니다..

물론 이래하면 쿼리 조건절을 바꾸거나 하면 두군데를 수정해야할 수도 있지만, 웅파님 말씀따라 함수 하나에서 요래조래 조합하면 그러지 않아도 될듯하고요..

개인적으로는 쿼리를 너무 조합형으로 하는거 싫어서 전 따로 하지만용..ㅋ

질문하신 " 모델에서 조인한 결과물의 쿼리 결과 레코드 수를 어떻게 표현하는지요? " 딱 이것만이라면 num_rows를 하거나 그냥 php의 count() 해도 되겠죵..