CI 묻고 답하기

제목 초보자 질문이요.. 모델에서 다른 모델사용하기
글쓴이 소중미야 작성시각 2010/08/02 10:30:45
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 25942   RSS

** 아래 소스를 참고 했는데요..
http://www.codeigniter-kr.org/source/view/307


<?php

class Test_model extends Model
{
 function __construct()
 {
  parent::Model();

  $MY =& get_instance();
  $MY->load->model('Common_model');
  
 }
 
 function get($table)
 {

  $result = $MY->Common_model->get($table);
  
  return $result;
  
 }
}

?>


=====================================================================
* Test_model 의 생성자에서 $MY->Common_model을 로드해서
get 메소드에서 사용하려니까 Undefined variable: MY 에러가 떠요.
인스턴스 생성해서 모델 로드하는 부분을 get 메소드로 옮기면 잘 작동 됩니다.
원래 생성자에서 인스턴스 생성후 다른 메소드에서도 가져다 쓸수 있는거 아닌지요.. ㅜㅜ
위의 예제URL에서도 그렇게 사용하고 있구요..
여러 메소드에서 가져다 쓸거라서.. 생성자에서 해결하고 싶습니다..
도와주세요~~
======================================================================





<?php
class Common_model extends Model
{
 function __construct()
 {
  parent::Model();
    
 }
 
 
 function get($table)
 {
  $query = $this->db->get($table);
  
  $result[0] = $query;
  
  
  return $result;
 }
}

?>
 

 다음글 썸네일 관련 질문입니다.. (6)
 이전글 view 페이지에서 controllers 이름을 알고 ... (2)

댓글

변종원(웅파) / 2010/08/02 11:36:13 / 추천 0
function __construct() 대신 function Test_model()로 해보시고
$MY 변수명도 다른 걸로 바꿔서 사용해보세요.

그리고 모델에서 다른 모델을 호출하여 사용하는 것보다는 컨트롤러에서 여러 모델의 값을 사용하는 것이
맞습니다.

컨트롤러에서 Test_model과 Common_model의 값을 받아서 서로 전달하여 처리하는 것이
프로그램 로직상이나 유지보수 측면에서 좋습니다.

추가. 모델에서 부른 모델안에서 $this-> 로 호출하기때문에 에러가 나는겁니다.

케이든 / 2010/08/02 15:26:59 / 추천 0
웅파님 말씀대로 로직상 올바르지 않습니다

http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

그리고 에러내용은 $MY변수는 생성자메쏘드의 지역변수(?)인데

다른 메쏘드에서 접근하려고 하니깐 당연히 에러가 나는겁니다

클래스변수($this->MY)로 바꿔서 해보세요
소중미야 / 2010/08/02 18:12:52 / 추천 0
아항.. 그렇군요.. 감사합니다..
로직상 옳지 않다는 말씀 수용하겠습니다.
초보자 티 팍팍... 내고 있네요.. ㅋ