Я пытаюсь реализовать простую систему обмена сообщениями в CakePHP 1.3. Что мне нужно сделать, так это выполнить запрос, чтобы вернуть массив пользователей, с которыми мой вошедший в систему пользователь ведет беседу (то есть либо получил сообщение, либо отправил сообщение, либо и то, и другое).
Модель «Мой пользователь» настроена так:
class User extends AppModel {
var $name = 'User';
var $actsAs = array('Containable');
var $hasMany = array(
'SentMessages' =>
array (
'className' => 'Message',
'foreignKey' => 'sender_id'
),
'ReceivedMessages' =>
array (
'className' => 'Message',
'foreignKey' => 'receiver_id'
)
);
}
Я могу использовать Containable для извлечения только Пользователя и связанных с ним сообщений и добавлять условия к этим операторам Container, чтобы ограничить эти сообщения сообщениями между каждым пользователем и моим зарегистрированным пользователем.
$users = $this->User->find('all', array(
'contain' => array(
'ReceivedMessages' => array(
'conditions' => array(
'receiver_id' => $my_user_id
)
),
'SentMessages' => array(
'conditions' => array(
'sender_id' => $my_user_id
)
)
)
));
Однако, это все еще возвращает КАЖДОГО пользователя в моей БД. Есть ли способ написать этот запрос так, чтобы возвращались только пользователи с любыми сообщениями SentMessages или ReceivedMessages?
Спасибо!