CakePHP - нежелательный HABTM, содержащийся в find с использованием «rate » - PullRequest
0 голосов
/ 24 января 2012

Я создаю систему обмена сообщениями, используя CakePHP. С точки зрения моделей,

Users HABTM Conversations
Conversations hasMany Messages
Messages belongTo User (the sender)

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

$user = $this->Conversation->User->find('first', array(
        'conditions' => array('User.id' => $user_id),
        'contain' => array(
            'Conversation' => array(
                'ConversationsUser',
                'Message' => array(
                    'order' => 'Message.created DESC',
                    'limit' => 1,
                    'User' => array(
                        'Student' => array(
                            'University'
                        ),
                        'Recruiter' => array(
                            'Org'
                        )
                    )
                )
            )
        )
    ));

Когда я получаю результаты, я получаю $ user ['Conversation'] ['Message'] ['User'] ['Conversation'] - в основном, соединение HABTM автоматически выполняется на 3 уровня глубиной, и нет никакого способа для мне, чтобы предотвратить это. Можно ли как-нибудь удалить эту информацию из поиска?

1 Ответ

0 голосов
/ 24 января 2012

решаемая.Я реструктурировал поиск, выполнив:

$this->Conversation->bindModel(array('hasOne' => array('ConversationsUser')));
$conversations = $this->Conversation->find('all', array(
        'conditions' => array('ConversationsUser.user_id' => $user_id),
        'order' => 'Conversation.modified DESC',
        'contain' => array(
            'ConversationsUser',
            'User' => array(
                'conditions' => array('User.id <> ' . $user_id),
                'ProfilePhoto' => array(
                    'Attachment'
                ),
                'Student' => array(
                    'University'
                ),
                'Recruiter' => array(
                    'Org'
                )
            ),
            'Message' => array(
                'order' => 'Message.created DESC'
            )
        )
    ));

Мне действительно не нужно, чтобы пользователь был в сообщении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...