ユーザー間の簡単な内部メッセージング システムが必要です。
私のテーブル:
+--------------+ +---------------------+
| 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'