CI 묻고 답하기

제목 라이브러리에서 모델 부분의 결과값 접근하기 질문..
글쓴이 lcm 작성시각 2010/06/29 17:20:43
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 25782   RSS

1. 액티브레코드를 사용한것
  $qry1= $this->db->_compile_select();      
   $rows= $this->db->query($qry1)->result_array();


2. 기존의 쿼리방식 사용($sql변수에 쿼리문 담음)
   $qry1= $this->db->_compile_select($sql);      
   $rows= $this->db->query($qry1)->result_array();



--------------------------------------------------------------------------

1번 방식으로는 라이브러리(Paging.php)에서
$rows= $this->db->get()->result_array();
로 값을 가져올수잇는데
2번 방식으로는  계속 값이 없는걸로 인식되네요..
무슨 이유인거죠?
기존 쿼리방식으로 결과를 얻은것을
라이브러리상에서 가져다 쓰려면 어떻게 접근해야하나요?

팁은 못주고 질문만해서 ㅈㅅ합니다;
 다음글 DB질문 입니다. 프로시져는 어떻게 쓰나요? (1)
 이전글 twitter라이브러리에서 즐겨찾기 추가 및 삭제시 도...

댓글

lcm / 2010/06/29 19:23:24 / 추천 0
라이브러리 부분에서

$rows= $this->db->get()->result_array();

위의 뜻이
모델부분에서 SELECT한 결과(배열)값을 가져와서 $rows에 담겟다..이거 맞죠?

액티브레코드를 사용해보면 값을 가져오는데
기존 쿼리방식(UNION때문에 사용)으로 사용해보면 왜 값을 못가져올까요..;;
변종원(웅파) / 2010/06/30 09:49:58 / 추천 0

제가 보기에는 매뉴얼을 안 읽으신 것 같습니다.
기본적인 것을 알아야 응용을 하고 팁을 사용하고 할 수 있습니다.
지금 사용중이신 _compile_select() 는 정상적인 사용형태가 아닙니다.
편법으로 사용하는 부분이구요.

_compile_select() 이 함수를 매뉴얼에서 찾아보세요. 나오는지?

그리고 _compile_select() 이 함수는 액티브레코드의 함수입니다. 기존 쿼리 방식으로는 작동하지 않는 함수입니다.

매뉴얼을 자꾸 말씀드리는 이유는 매뉴얼 읽어보시면 기존 쿼리 방식으로 사용하는 법, 액티브레코드 사용하는 법 다 나와있습니다. 매뉴얼 숙독 안하시고 팁에서 _compile_select() 함수를 사용하시니 문제가 되는 겁니다.

lcm / 2010/06/30 10:37:48 / 추천 0

기존쿼리는
 $rows = $this->db->query($sql);          
 $rows->result_array();

이렇게 사용하는거 맞지요?
모델부분에서는 $rows를 찍어보면 제대로 배열(결과값) 가져오는데요..
라이브러리에서는 값을 못가져오더군요.

제가 CI를 다 숙지 못한점도 있겠지만...

일단 라이브러리에서
$rows= $this->db->get()->result_array();
이런방식으로 모델부분에서의 결과값을 가져오더군요..

액티브레코드의 함수를 이용하여 result_array(); 를 적용한 값만
가져오는것 같지는 않구요.

소스는 기존의 소스를 사용하여 처음사용하는 cI와 php로 수정작업하려니깐
잘 안풀리네요..

여하튼 답변 감사드려요~
메뉴얼 한번더 찾아봐야겠네요.

변종원(웅파) / 2010/06/30 11:43:43 / 추천 0
사용자가 만든 라이브러리에서 ci의 라이브러리를 사용하려면

http://codeigniter-kr.org/user_guide/general/creating_libraries.html 에서 CodeIgniter 리소스를 여러분의 라이브러리와 함께 사용하기 부분을 참고하여 사용해야 합니다.

라이브러리는 ci의 $this 객체로 직접 사용할 수 있는 영역이 아닙니다.

매뉴얼에 보시면 

$this는 컨트롤러,뷰,모델에서만 직접적으로 사용할 수 있습니다.

만약 당신이 만든 라이브러리(custom class) 에서 CodeIgniter의 클래스를 사용하고자한다면 아래와 같은 방법으로 해야합니다.:

먼저 CodeIgniter객체를 변수로 할당합니다.:

$CI =& get_instance();

$CI->load->helper('url');  //
Not  $this->load->helper('url')