2012-01-17 4 views
0

두 개의 프로파일과 메시지가 있습니다. 컨트롤러에서 모든 메시지를 가져 오려고하면 케이크가 결과 배열의 모든 프로필을 반환하지 않습니다. 메시지 컨트롤러에서 :CakePhp belongsTo 관계 문제

$this->Message->recursive=3; 
$m=$this->Message->find('all'); 

모델 :

class Message extends AppModel {  
var $name = 'Message'; 
var $primaryKey = 'id'; 
var $useTable = 'messages'; 
var $belongsTo = array(
    'Profile' => array(
    'className' => 'Profile', 
    'foreignKey' => 'author_id', 
    'conditions' => '', 
    'fields' => '', 
     'order' => '' 
)); 

그리고

class Profile extends AppModel { 
    var $name = 'Profile'; 
    var $primaryKey = 'id'; 
    var $useTable = 'profiles'; 
    var $belongsTo = array(
    'Account' => array(
    'className' => 'Account', 
    'foreignKey' => 'account_id', 
    'conditions' => '', 
    'fields' => '', 
    'order' => '' 
)); 
    var $hasMany = array(
     'Message' => array(
      'className' => 'Message', 
      'foreignKey' => 'Author_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
    )); 

P.S. 대답 옵션은 7 시간을 기다릴 수 없습니다. 필자는 해결책을 찾았습니다. 메시지 모델 파일명은 messageS.php였습니다. 이름을 message.php로 변경하자 마자 필요한 모든 것이 있습니다. 나는 누군가를 도운다

답변

0

귀하의 답변에 따라 (물론 다른 사람들과도 관련이 있습니다.) 귀하의 연결이 정확하다고 확신한다면 파일 이름을 확인하여 fit the conventions (단수 모델)을 확인하십시오.

재귀 3을 사용하는 경우 (2보다 높지만 2보다 컸음을 알지 못했지만) 분명히 CakePHP의 Containable Behavior을 사용하는 것이 더 나을 것입니다. 2의 재귀 적 사용조차도 일반적으로 과다하다. Message.php 모델 파일

0

적는다

VAR을 $의 belongsTo를 배열 = (

'프로파일'=> 어레이 (

'className' => 'Profile', 

'foreignKey' => 'author_id', 

'conditions' => '', 

'fields' => '', 

'order' => '' 

));


Profile.php 모델 파일에 쓰기 :

var에 $의 hasMany의 = 배열 ​​(

'메시지'=> 배열 (

'className' => 'Message', 

    'foreignKey' => 'Author_id', // Hear you "Author_id" should change as "author_id" 

    'dependent' => false, 

    'conditions' => '', 

    'fields' => '', 

    'order' => '', 

    'limit' => '', 

    'offset' => '', 

    'exclusive' => '', 

    'finderQuery' => '', 

    'counterQuery' => '' 

));


컨트롤러 :

$ m = $ this-> 메시지 -> 찾기 ('모든');

이제 정상적으로 작동합니다. 즐겁게 ...