cakephp как сделать вложенное соединение - PullRequest
0 голосов
/ 07 декабря 2011

У меня установлены следующие отношения привязки к CakePHP. они работают, находят, но как получить запись результатов комментария, также вложенную в результаты?

      $this->Posts->bindModel(array(
        'hasOne' => array(
            'User' => array(
                'foreignKey' => false,
                'type' => 'INNER',
                'conditions' => array('Posts.user_id = Users.id')
            )
        ),
        'hasMany' => array(
            'Comment' => array(
                'foreignKey' => 'post_id',
                'conditions' => array('Comment.active' => 1)
            )
        )
    ));

это прекрасно работает, чтобы получить результат как:

[1] => Array
    (
        [Posts] => Array
            (
                [title] => test post
                [body] => test body
                [published] => 
                [id] => 15
            )

        [User] => Array
            (
                [id] => 7
                [username] => admin
                [password] => d0557b9de8bb6f7fb3248a017c7b67a6
                [email] => frankhinchey@gmail.com
                [group_id] => 1
                [created] => 2011-11-21 15:19:09
            )

        [Comment] => Array
            (
                [0] => Array
                    (
                        [id] => 10
                        [user_id] => 7
                        [post_id] => 15
                        [text] => testdfasdfdsfasdfasdfasdfasd
                        [active] => 1
                        [created] => 2011-12-02 20:50:57
                        [published] => 2011-12-05 13:58:25
                    )

                [1] => Array
                    (
                        [id] => 11
                        [user_id] => 7
                        [post_id] => 15
                        [text] => this is a test comment
                        [active] => 1
                        [created] => 2011-12-02 21:31:56
                        [published] => 2011-12-03 11:34:32
                    )

            )

    )

)

мой вопрос, как также получить связанного пользователя в комментарии? есть ли способ вставить в мой запрос отношение hasone между комментарием и пользователем?

1 Ответ

0 голосов
/ 10 декабря 2011

Можете ли вы использовать содержащиеся в bindModel? Никогда раньше не пробовал ... но стоит попробовать.

$this->Posts->bindModel(array(
        'hasOne' => array(
            'User' => array(
                'foreignKey' => false,
                'type' => 'INNER',
                'conditions' => array('Posts.user_id = Users.id')
            )
        ),
        'hasMany' => array(
            'Comment' => array(
                'foreignKey' => 'post_id',
                'conditions' => array('Comment.active' => 1),
                'contain' => array('User'),
            )
        )
    ));

На самом деле теперь, когда я прочитал ваш вопрос, я не совсем уверен, что вы хотите. Вы хотите, чтобы user_id того человека комментировал? Можете ли вы просто рассказать о том, что вы хотите немного больше.

...