Связи модели CakePhp не предоставляют обратных ссылок - PullRequest
0 голосов
/ 31 марта 2011

в настоящее время мои корабли отношений моделей настроены следующим образом

class Post extends AppModel {
    var $name = 'Post';
    var $displayField = 'title';
    var $hasMany = array('Comment');
    var $belongsTo = array('User');
 }

 class User extends AppModel {
    var $name = 'User';
    var $displayField = 'username';
    var $hasMany = array('Post', 'Comment');
 }

 class Comment extends AppModel {
    var $name = 'Comment';
    var $displayField = 'id';
    var $belongsTo = array('User', 'Post');
 }

, когда я пытаюсь сослаться на имя пользователя в разделе комментариев на моих сообщениях, чтобы просмотреть его с ошибками, указав недопустимый индекс, и при дальнейшемрасследование Я заметил, что моя модель не включает информацию о пользователе в качестве обратной ссылки для моих комментариев, только информация о пользователе включена для сообщений

, результирующий массив выглядит так:

Array
(
    [Post] => Array
        (
            [id] => 1
            [title] => test post
            [user_id] => 1
            [body] => this is a test post 
            [date_posted] => 0000-00-00 00:00:00
            [url_slug] => this-is-a-test-post
        )

    [User] => Array
        (
            [id] => 1
            [username] => admin
            [password] => e7b9f7bc09beee85947ef987d7df49df136c7c38
            [first_name] => Chris
            [last_name] => McGrath
            [roles] => Admin
            [email] => admin@thissite.com
            [last_login] => 0000-00-00 00:00:00
            [member_since] => 0000-00-00 00:00:00
            [FacebookProfile] => 
            [TwitterUserName] => 
        )

    [Comment] => Array
        (
            [0] => Array
                (
                    [id] => 5
                    [post_id] => 1
                    [user_id] => 1  //expecting this to pull user model for each 
                    [comment] => test comment
                )

        )

)

мой вопрос: это вызвано чем-то, что я неправильно делаю в ассоциациях моделей, является ли это ограничением каркаса модели или я должен вручную извлекать пользователя из модели пользователя в этом типе экземпляра

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

использование рекурсивного = 2 - хорошая идея.

$this->Post->find(
    'first',
    array(
        'conditions' => array(
            'Post.id' => $id
        ),
        'contain' => array(
            'User',
            'Comment' => array(
                'User' => array(
                    'fields' => array(
                        'User.id',
                        'User.name'
                    )
                )
            )
        )
    )
);

http://book.cakephp.org/view/1323/Containable

0 голосов
/ 31 марта 2011

Попробуйте сделать что-то вроде этого:

$this->Post->recursive = 2; //This will get all the comments and their relationships
$post = $this->Post->read(null,$post_id); //The way you were getting your post.
debug($post); // You will see what it gets

РЕДАКТИРОВАТЬ: Вы можете попробовать это тоже:

$this->Post->Comment->recursive = 2;
...