두 가지 : 여러 모델 이름이 이상한 이유로 작동 할 수 있다고해도, 모델 이름은 $this->loadModel('Transaction');
과 같이 단수입니다. the manual on naming conventions을 참조하십시오.
둘째, recursive
을 잊어 버리고 Containable
동작으로 이동하십시오. 솔직히, 왜 이것이 기본 프로세스가 아닌지 궁금해하기 때문에 유용합니다 (아마도 프레임 워크가 매우 성숙되었을 때 Containable이 만들어 졌기 때문일 것입니다). Matt은 Containable이 좋은 이유를 설명하는 a good book을 가지고 있습니다 (실제로 다운로드하십시오, 필수 항목 : D). 트랜잭션 모델에서
:
var $belongsTo = array(
'Item' => array(
'className' => 'Item',
'foreignKey' => 'item_id',
)
);
1)과 같은 모델의 연결을 정의 :하지만 더 많은 도움을, 당신이 함유 성으로 문제를 해결하는 방법을 정확하게 알려거야 항목 모델에서
:
var $hasMany = array(
'Transaction' => array(
'className' => 'Transaction',
'foreignKey' => 'item_id',
'dependent' => true,
'exclusive' => true,
)
);
은 회원 모델에 대해 동일한 작업을 수행합니다.
2)이 코드 /app/
에 app_model.php
파일을 만듭니다 합니다 ($actsAs
변수를 여기에 AppModel이 클래스가 함유 성 사용하는 모든 모델을 알려줍니다 이내)
<?php
class AppModel extends Model {
var $recursive = -1;
var $actsAs = array('Containable');
}
?>
3) 보고서 컨트롤러에 코드를 변경 (contains 매개 변수는 포함하려는 모든 연관된 모델의 배열이며, 하나의 assoc. model 또는 all 또는 원하는 것을 포함 할 수 있습니다.)
$this->loadModel('Transaction');
$this->paginate = array('Transaction' => array('contain' => array('Item', 'Member')));
$results = $this->paginate('Transaction');
그리고 그게 전부입니다!
신성한 **. 그런 단순한 실수! 나는 2 년 동안 Cake를 사용 해왔고, 모델명으로 단수로 대신 복수형을 사용하고 있다는 사실을 발견 할 수 없었습니다 !! 나는 그것이 어째서 작동하지 않는지 어제부터 머리를 깨고있다. @ YOMorales, 시간 내 주셔서 감사합니다. 당신은 정말로 날카로운 눈을 가졌습니다. :) 그리고 나는 Containable에 대해 알고 있습니다, 나는 게시하기 전에 그것을 시도했습니다. 나는 당신이 말한 것에 동의합니다. 수용 할 수있는 것이 더 나은 관행입니다. 나는 v1을 쓰기 전에 케이크를 사용 했었습니다. 오래 전에 버틸 수있을 것 같았습니다. D – Ashok
쿨! 그때 이후로 Cake를 사용 해왔다. 오랫동안 사용자와 이야기하는 것이 좋습니다. 어쨌든 이상한 것은 여러 모델 이름이 예제 코드에서 작동한다는 것입니다. 이상 하네, 네. – YOMorales
최근 Matt의 모든 링크가 손상된 것 같습니다. 아무도 그 전자 책에 대한 작동 링크를 알고 있습니까? –