CakePHP - Проблемы с ассоциациями

Я пытаюсь сделать так, чтобы, когда я выполняю $this->Topic->find('all'), он извлекал все связанные данные пользователя и все связанные данные сообщения. Проблема в том, что я не могу сделать это прямо сейчас.

Прямо сейчас я делаю $this->User->find('all'), который возвращает данные темы и все сообщения внутри этой темы. Я предполагаю, что мой код приказывает сделать это, но это не то, чего я хочу. Пожалуйста, простите мои объяснения. Я действительно не понимаю ассоциаций с CakePHP.

Вот мои модели для справки:

Тема.php

class Topic extends AppModel {
var $name = 'Topic';

var $actsAs = array('Containable');                
var $hasMany = array(
    'Post' => array(
        'className'     => 'Post',
        'foreignKey'    => 'topicid'
    )
);

var $hasOne = array(
    'User' => array(
        'className'    => 'User',
        'foreignKey'    => 'id'
    )
);    

var $belongsTo = array(
    'Forum' => array(
        'className'    => 'Forum',
        'foreignKey'    => 'id'
    )
); 
}

Post.php

class Post extends AppModel {
var $name = 'Post';
var $actsAs = array('Containable');
 var $hasOne = array(
    'User' => array(
        'className'    => 'User',
        'foreignKey'    => 'id'
    )
 ); 


 var $belongsTo = array(
    'User' => array(
        'className' => 'User',
        'foreignKey' => 'userid'
 ),
    'Topic' => array(
        'className'    => 'Topic',
        'foreignKey'    => 'topicid'
    )
 );

}

Форум.php

class Forum extends AppModel {
var $name = 'Forum';

var $hasMany = array(
    'Topic' => array(
        'className'     => 'Topic',
        'foreignKey'    => 'forumid'
    )
);
}

Пользователь.php

class User extends AppModel {
var $name = 'User';
var $actsAs = array('Containable');


var $hasMany = array(
    'ForumPost' => array(
        'className'     => 'ForumPost',
        'foreignKey'    => 'userid'
    ),
    'ForumTopic' => array(
        'className'     => 'ForumTopic',
        'foreignKey'    => 'userid'
    )
);
}

Я хочу, чтобы я мог выполнить $this->Topic->find('all'), и он дает мне данные темы, затем данные сообщения для каждого сообщения в теме и данные пользователя для каждого сообщения в Тема (соответственно)..

Спасибо за любую помощь.


person Mikey    schedule 29.06.2011    source источник


Ответы (1)


Я узнал о своей проблеме благодаря savant на IRC-канале #cakephp. Мои модели были названы неправильно.. :)

person Mikey    schedule 30.06.2011