2013-05-28 2 views
0

я следующие модели ассоциаций:CakePHP порядок ассоциированных моделями

//User Model 
public $hasMany = array(
    'MessageSent' => array(
     'className' => 'Message', 
     'foreignKey' => 'sender_id' 
    ), 
    'MessageReceived' => array(
     'className' => 'Message', 
     'foreignKey' => 'receiver_id' 
    )); 

//Message Model 
public $belongsTo = array(
    'Sender' => array(
     'className' => 'User', 
     'foreignKey' => 'sender_id' 
    ), 
    'Receiver' => array(
     'className' => 'User', 
     'foreignKey' => 'receiver_id' 
    ) 
); 

Теперь я хотел бы принести пользователь с сообщениями по заказу «создал», так что я могу создать поток сообщений али Facebook.

$this->User->contain(array(
    'MessageSent' => array('conditions' => array('MessageSent.receiver_id' => 
     $this->Auth->user('id'))), 
    'MessageReceived' => array('conditions' => array('MessageReceived.sender_id' => 
     $this->Auth->user('id'))) 
    )); 
$partner = $this->User->find('all', array('conditions' => array('slug' => 
    $this->request->params['slug']))); 

Так что мне нужно что-то вроде «ORDER BY Message.created», так что я получаю MessageSent и MessageReceived смешивают вместе и упорядочены по дате. Как мне это сделать?

ответ

0

Не могли бы вы просто выполнить запрос из модели сообщения, а не из модели пользователя?

Например:

$userId = $this->Auth->user('id'); 
$this->Message->find('all', 
    array(
     'conditions' => array(
      'OR' => array(
       'Message.sender_id' => $userId, 
       'Message.receiver_id' => $userId 
      ) 
     ), 
     'contain' => array('Sender', 'Receiver'), 
     'order' => 'Message.created DESC' 
    ) 
); 
Смежные вопросы