2011-11-17 23 views
0

我想在我的關係數據庫的查找方法中使用Group我想通過user_id過濾結果集中的唯一receiver_id來獲取最新記錄是我的代碼:CakePHP在查找方法中使用組

$this->loadModel('Chat'); 
     $lastChat = $this->Chat->find('all', array(
      'conditions' => array(
       'Chat.user_id' => $user_id['User']['id'] 
      ), 
      'fields' => array(
       'Chat.id', 
       'Chat.chat', 
       'Chat.user_id', 
       'Chat.receiver_id', 
       'Chat.read', 
       'Chat.created' 
      ), 
      'group' => array('Chat.receiver_id'), 
      'order' => array('Chat.created DESC') 
     )); 

但是,這似乎並不奏效。我不知道爲什麼,但我只得到一個結果...

我怎樣才能得到多個結果的基礎上面的規則。

+0

看起來好像沒什麼問題。我建議你試着找出$ user_id是否真的包含你的想法。 – budwiser

+0

你打印它生成的查詢嗎?也許看着sql你可能會看到你的錯誤。要做到這一點,只需更改find​​Query並打印lastchat即可。嘗試使用'select * from chats where user_id = $ userid'來查看它是否給你更多的結果。 – api55

+0

就像api55說的那樣,告訴我們它正在生成的查詢 - 然後更容易幫助你。 – Dave

回答

0

嘗試以下操作:

$db = $this->Chat->getDataSource(); 
$chats = $db->query("SELECT * , (Chat.user_id + Chat.receiver_id) AS dist 
    FROM (
     SELECT * 
     FROM chats t 
     WHERE (t.user_id =$id OR t.receiver_id =$id) 
     ORDER BY t.id DESC 
    ) Chat 
    GROUP BY dist 
    ORDER BY Chat.id DESC");