我需要一个简单的用户之间的内部消息传递系统。
我的桌子:
+--------------+ +---------------------+
| messages | | users |
+----+---------+ +---------------------+
| id | message | | id | username | ...
+----+---------+ +---------------------+
+------------------------------------------------------------------------------+
| users_messages |
+------------------------------------------------------------------------------+
| id | from_usr_id | to_usr_id | msg_id | thread_id | read | sent_at | read_at |
+------------------------------------------------------------------------------+
INT 'thread_id'
表示对话线程,用于对消息进行分组。
BOOLEAN 'read'
表示用户是否打开/查看了消息。
我想将消息分组'thread_id'
,排序,'sent_at'
以便我可以按线程向用户显示他的最新消息。我还想计算每个线程中的消息。
我想为特定的用户 ID 获得类似的东西:
+----------------------------------------------------------------------------
| last_messages_by_conversation
+----------------------------------------------------------------------------
| message | from_username | sent_at | count_thread_msgs | count_unread_msg |
+----------------------------------------------------------------------------
TEXT 'message'
是具体的最新消息'thread_id'
VARCHAR 'from_username'
并DATETIME 'sent_at'
与最新消息有关。
INT 'count_thread_msgs'
和INT 'count_unread_msg'
与线程相关,表示线程中的消息总数和未读消息数。
每行代表一个线程/对话(按 分组'thread_id'
),显示该特定线程的最后一条消息(按 排序'sent_at'
)。