2014-07-20 3 views
0

내 모델은 다른 테이블/모델과 많은 관계가 있습니다. 예를 들어 하나의 모델 결과에서 필드별로 정렬하는 경우와 같이 쿼리 결과의 다른 모든 테이블이 누락되어 수동으로해야하는 경우 매개 변수를 포함하여 작성, 수동으로 쓰지 않고도 모든 관련 모델 데이터를 얻을 수 있습니까?CakePHP에서 "contains"를 찾았습니다

$data = $this->Cv->find('first', 
    array(
     'contain' => array('Cv_experience' => array('order' => 'Cv_experience.start_year desc')))); 
+0

'Cv_experience' => 컨벤션에 "CvExperience"나 물건들이 찢어 질 것입니다. 추신 : 당신은 항상 당신이 사용하고있는 정확한 cakephp 버전을 언급해야합니다. – mark

답변

0

모델의 recursive 속성에 의존하는 것 같습니다. '포함'을 사용하면 자동으로 들어오지 않는 모델이 더 이상 자동으로 작동하지 않습니다. 맞습니까?

대답은 recursive 또는 contain (둘 다 사용해서는 안됨)입니다. contain을 사용하는 경우 재귀를 OFF ($recursive = -1;)로 설정해야합니다.

최대한 멀리 사용하려면 recursve을 사용하지 않는 것이 좋습니다. AppModel에서 -1로 설정하고 추가 데이터가 필요할 때마다 Containable Behavior를 사용하십시오. 재귀는 단순한 블로그 앱 이외에는 나쁜 습관이지만 케이크 3에서는 완전히 제거되고 있다고 생각합니다.

주문시주의 사항 : 포함 된 모델로 주문할 수 없습니다. '포함'은 여러 개의 쿼리를 생성하므로 시도하려는 작업을 수행하려면 JOIN을 사용해야합니다.

+0

하지만 주문 ... 내 문제는 그 결과에 다른 모델 데이터를 포함하지 않는 것을 사용하면 포함됩니다. 예를 들어 CV 모델은 CV_education, CV_experience, CV_seminars 등과 관련이 있습니다 ... 포함하지 않는 경우 모든 데이터를 가져옵니다. 모든 것이 좋습니다. 하지만 CV_experience를 사용할 때 Cv_education ..etc.이 아닌이 모델 만 얻었고 포함 된 다른 모든 모델 이름을 정의하고 싶지는 않습니다. 관련된 모든 데이터를 얻는 방법은 모든 관련 항목을 정의하지 않고 있습니다. 모델이 포함되어 있습니까? –