在对话列表中为同一发件人获取一行/单元格

时间:2017-10-27 08:45:19

标签: php yii2

我的网站上有一个消息中心,会话列表会为同一个发件人不断添加新的行/单元格,因为您可以与同一个发件人保持对话。换句话说,如果您从对话列表中的同一发件人收到4封邮件,则您将收到与您收到邮件的同一发件人的4行/单元格。但是,无论发件人写了多少次,我都希望在同一发件人的会话列表中有1行/单元格。

下面是来自消息控制器的相关代码。

// get recent messages to show in left column

$recent = Message::find()
                ->with('sentFrom')
                ->where(['sent_to' => Yii::$app->user->identity->id])
                ->andfilterWhere([
                                    'or', 
                                    ['like', 'subject', $search_subject],
                                    ['like', 'sent_from', $search_sender],
                ])
                ->orderBy('created_at DESC')
                ->limit(Yii::$app->params['message_chat']['recent_limit'])
                ->all();

1 个答案:

答案 0 :(得分:0)

我认为你可以尝试使用groupBy语句(类似这样的东西)::

$recent = Message::find()
    ->with('sentFrom')
    ->where(['sent_to' => Yii::$app->user->identity->id])
    ->andfilterWhere([
        'or',
        ['like', 'subject', $search_subject],
        ['like', 'sent_from', $search_sender],
    ])
    ->orderBy('created_at DESC')
    ->limit(Yii::$app->params['message_chat']['recent_limit'])
    ->groupBy(['sentFrom.id'])
    ->all();