2013-01-13 9 views
2

나는 인터넷과 stackoverflow에서 검색해 왔지만 해결책을 찾지 못했거나 같은 문제가 아니 었습니다.CodeIgniter를 사용하여 동일한 컨트롤러에 두 모델을로드하는 방법은 무엇입니까?

두 컨트롤러 모델을 동일한 컨트롤러에서 동일한 기능으로로드해야합니다. 하나는 "model_membre"이고 다른 하나는 "model_annonce"입니다. 클래스, 파일 및 객체의 이름입니다.

개별적으로는 매우 훌륭하게 작동하지만 속성과 메서드에 액세스 할 수 있지만 두 모델을로드 할 때로드 방법에 관계없이 두 번째 모델에 액세스 할 수 없습니다 (자동로드, $this->load->model('model_name'), $this->load->model('model_name', 'object_name')).

나는이 문제를 만들어 내 코드의 다른 부분이 아니었던 있는지, "테스트"컨트롤러로 단순화 :

public function index() 
{ 
    $this->load->model('model_membre', 'membre'); 
    $this->load->model('model_annonce', 'annonce'); 
    $liste = $this->annonce->listerEspeces(); 
    $membre = $this->membre->obtenirMembre(1); 
} 

내가 순서를 체인저 시도하고, 제 2 작동하지로드. 나는이 메시지가 :

A PHP Error was encountered Severity: Notice Message: Undefined property: Test::$annonce Filename: controllers/test.php Line Number: 15

Fatal error: Call to a member function listerEspeces() on a non-object in /homez.604/animalix/beta/application/controllers/test.php on line 15

+0

모델이 하위 폴더 (예 : models-> 하위 폴더 -> your_model –

+0

)에 저장되지 않았습니까? 아니요, 둘 다 /application/models/model_name.php에 저장됩니다./그렇지 않은 경우로드되지 않고 개별적으로 작업하십시오 – OwNAkS

+0

''model_annonce'' 만로드하면 어떻게됩니까? 그럼 제대로 작동합니까? – ashiina

답변

4

는 다음과 같은 방법을 시도해보십시오 ...

public function index() 
{ 
    $this->load->model(array('membre','annonce')); 
    $liste = $this->annonce->listerEspeces(); 
    $membre = $this->membre->obtenirMembre(1); 
} 
+0

나는 성공하지 않고 다음과 같은 오류를 시도했지만 비 객체에서는 멤버 함수 listerEspeces()를 호출했다.[코드] public function index() \t { \t \t $ this-> load-> model (array ('model_membre', 'model_annonce'))); \t \t $ liste = $ this-> model_annonce-> listerEspeces(); \t \t $ membre = $ this-> model_membre-> obtenirMembre (1); \t} [/ code] – OwNAkS

+0

@OwNAkS - 그러면 코드의 다른 부분에서 오류가 발생할 수 있습니다. –

+0

@mamdouhalramadan 컨트롤러를 생성자와 함수를 사용하여 테스트 용으로 만 만들었 기 때문에 가능하지 않습니다. 내 모델은 내 autoload.php에로드되어 있지 않습니다. – OwNAkS

2

모델이 CI_Model하지 CI_Controller를 확장해야합니다! 이것이 문제의 근원이었습니다.

+0

정말 고맙습니다. – xsami