2016-07-12 3 views
0

컨트롤러에서 cakephp에서 다른 테이블 데이터를 얻으려면 loadModel 메서드를 사용할 수 있습니다.하지만 모델에서 가능합니까? 예를 들어 ORM/Table 클래스를 사용했습니다. 내 테이블 이름Cakephp 3 : 사용하지 않으면 모델에 다른 모델을로드 할 수 있습니까?

$this->table('blogs'); 

이 가능 관계없이 같은 방식으로 다른 테이블을 선언인가 코드 아래 table method.Like을 사용하여 정의?

참고 : 컨트롤러에서 할 수 있습니다.

+0

을 다루고 희망 ? 연관성이나 의존적 인 주입을 사용하지 않고 외부 세계에 대해 모델을 알게되면 나에게 지나치게 좋은 생각처럼 들리지 않습니다. – ndm

+0

나는 두 테이블 출석과 사용자가 있는데, 출석 테이블에 모든 사용자 데이터를보고 싶습니다. 출석 테이블에서 학생의 현재 상태를 추가하기 위해 선택 필드를 추가 할 것입니다. 그래서 출석 지수에 사용자 테이블 데이터가 필요합니다. –

+0

이 테이블과 같은 사운드는 서로 연관되어 있어야하며 다시 질문을 제기합니다. 이유는 무엇입니까? 당신은 뭘하고 싶은지에 대해서만 설명 했었지만 association/join 없이는 할 수있는 기술적 인 이유가 무엇인지를 설명하지 않았습니다! 또한 당신이 읽거나 저장하는 것에 대해 이야기하고 있는지 여부를 알기 어렵 기 때문에 몇 가지 코드를 보여주고 싶을 수도 있습니다 ... – ndm

답변

0

당신은 당신의 모델이 당신 협회 (등 belongsTo를, hasOne의)를 통해로드 할 다른 모델과 연결되어있는 경우는 TableRegistry Reference

use Cake\ORM\TableRegistry 
$otherTable = TableRegistry::get('other'); 
//do something with the other table 
//example 
$someRecord = $otherTable->find()->first(); 

를 사용할 수있는 또 다른 테이블의 모델을로드하려면 당신은 직접 예를 들어 다음과 같이 사용할 수 있습니다 :

$this->otherModel->find()->contain()->where(['someCondition' => 'value'])->first() 

은 그 당신이 뭘 하려는지 경우 당신이 정말로 하나에 두 개의 테이블을 정의 할 수 있다고 말했다 가졌어요. 다른 테이블에서 다른 테이블을로드하고 사용할 수 있지만 한 테이블 클래스 아래에 두 개의 테이블을 정의 할 수는 없습니다.

정확히 당신이 무엇을해야 같은 소리로 여기에 연결을 정의하지 않으 왜 난 정말 이해가 안 돼요,하지만 난 왜 그렇게해야 테이블 레지스트리 옵션은 당신에게

관련 문제