2011-01-20 12 views
0

メッセージのスレッドベースのレイアウトを使用するメッセージ受信ボックスシステムを開発しています。私が現時点で苦労しているのは、メッセージの読み取りステータスを更新することです。たぶん私は構造が間違っているので、いくつかのガイダンスを行うことができます。ここで受信トレイのメッセージの状態を読み取る

は私が持っているものです:message_threadsテーブルで

 
Table messages 
============== 
id 
thread_id 
from_user_id 
subject 
body 
sent_date 

Table message_threads 
===================== 
id 
message_id 
owner_id 
member_id 
owner_read 
member_read 

、「所有者」は、スレッドを開始したユーザーを意味し、「メンバー」は、他の参加者を指します。ユーザーの受信トレイには、自分自身で作成したスレッド(所有者)と、返信先の他のユーザー(メンバー)が作成したスレッドが含まれます。次のように

読み出し状態を設定するためのロジックがある:

  • 所有者が応答を送信する場合:「member_read」フィールドは、(未読)0に設定されている、「owner_read」フィールドが1に設定されている(読み取り)

  • メンバーが応答を送信する場合: 'owner_read' フィールドは0に設定されている(未読)、 'member_read' フィールドが1に設定されているが(読み)

今私はこれがあるとは思いません完全に正しいアプローチメンバーが読み取りステータスで受信トレイ内のメッセージを並べ替えることを望んでいるとします。ただし、ユーザーは所有者とメンバーの両方になることができ、テーブルには2つの読み取りフィールドがあります。だから、この種は正しいとは言えません。

私はこれについてどうすればいいのですか?

編集:ここではexapleシナリオは次のとおりです。 :

  • ユーザー1 2
    • スレッドAは、ユーザー2の受信トレイ(未読状態0)に表示され、ユーザーにスレッドAを送信
      • ユーザー2がスレッドAを開く
        • は、ユーザ1の受信トレイ(:未読状態0)にステータスをスレッドのスレッドに
          • 1に設定された状態をスレッド(読み取り)

        • ユーザ2件の返信
        • スレッド2ユーザーの受信トレイのステータス(ステータス1:読み取り)

      • ユーザ1は
        • は スレッドする(読み取る)

      • ユーザ1つの応答を1に設定するステータスをスレッドスレッド開き
        • ユーザー1の受信トレイ(ステータス1:読み取り)で、ステータススレッド:ステータスのみがそのメッセージのためである、「読み」
+0

...スレッドは2人だけが読むことができますか? – Matt

+0

はい、そうです。それは1-1の会話です。 – GSTAR

答えて

0

ユーザー2の受信トレイ(未読状態0)で、ステータススレッド

  • あなたからのものではありませんでした。受信者への返信は開かれたときに読むとマークされます。送信者はあなたが「領収書の確認」を希望しない限り読んでも気にしません。

    これは私の見た目です(メッセージのすべてのフィールドは含まれていません):

    表 "ユーザー"

    id 
    name 
    

    テーブル "メッセージ"

    id (int) 
    parent_id (int) 
    from_user_id (id) 
    to_user_id 
    read (bit/bool) 
    message (text) 
    

    私はあなたが右理解していなかったなら、私に教えてください。

  • +0

    私は参照してください。だからあなたのアプローチは、スレッドではなく、実際のメッセージの読み取りステータスを持つことです。しかし、ユーザーの受信トレイは個々のメッセージではなくスレッドを表示するので、これは機能しますか? – GSTAR

    +0

    あなただけのテーブルのほかにビューを使用することができるようなサウンド – Matt

    +0

    parent_idが0(上の会話)であると仮定すると、message_id、user_id、is_readによってスレッドを追跡する別のテーブルを持つことができます。このテーブルは、スレッドを開始したメッセージのIDだけを保持する必要があります。メッセージを表示するときにこのテーブルに参加し、その読み取りステータスに基づいて表示/非表示を切り替えることができます。 – IEnumerator

    関連する問題