问题描述
这是我的表的结构 [1]:https://i.stack.imgur.com/lmgtJ.png
用户表
id | 姓名 |
---|---|
1 | 遵守 |
消息表
id | user_id | to_user | content | 阅读 |
---|---|---|---|---|
1 | 2 | 1 | 消息 | 0 |
我想为诸如用户 1 向您发送消息 (24) 的用户显示通知,此处 24 是用户 1 的未读消息总数。
问题:通知必须按此顺序显示。最近发送消息的用户将首先显示。这正是我必须面对的问题。
输出示例:像 Android 应用 WhatsApp 在聊天区域显示一条消息。
注意:消息表中还添加了读取列类型布尔值。
解决方法
$message = DB::table('message')->select('message.user_id');
/* join */
$message = $message->join('user','message.to_user','=','user.id');
/* select statements */
$message = $message->addSelect('message.to_user');
$message = $message->addSelect(DB::raw('COUNT(*) AS total_messages'));
$message = $message->groupBy('message.user_id','message.to_user');
$message = $message->get();
这应该计算用户发送给其他用户的消息数量。
演示:SQL Fiddle
,解决方案。
最后,我通过查看这些链接找到了一个解决方案,我想通过提供指向他们答案的链接来感谢这些人。
这是最终代码
$
这是最终结果