Cakephp используя группу в методе поиска - PullRequest
0 голосов
/ 17 ноября 2011

Я пытаюсь использовать метод Group by in для моей реляционной базы данных. Я хочу получить последнюю запись с уникальным параметром receive_id из набора результатов, отфильтрованного по user_id, и ниже указан мой код:

$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')
        ));

Тем не менее, это не похоже на работу.Я не уверен, почему, но я получаю только один результат ...

Как я могу получить несколько результатов с правилами на основе выше.

1 Ответ

0 голосов
/ 11 октября 2015

Попробуйте следующее:

$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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...