我的网站上有一个消息中心,会话列表会为同一个发件人不断添加新的行/单元格,因为您可以与同一个发件人保持对话。换句话说,如果您从对话列表中的同一发件人收到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();
答案 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();