メッセージングシステムを作成し、受信トレイページで作業します。
受信トレイページは「スレッド」のように構成されており、2者間の最新のコミュニケーションを示したいと思います。あなたがメッセージを送信したか相手が送信したかにかかわらず、送信された最新のメッセージが表示されるFacebookの受信トレイ(左側)を考えてみてください。
これは私の現在のクエリです:
SELECT
m.*,
s.*,
c.*,
u.*,
CASE
WHEN m.uid_recipient <> 292 THEN @user_id := m.uid_recipient
WHEN m.uid_sender <> 292 THEN @user_id := m.uid_sender
END
FROM messages m
JOIN signup s ON s.uid = @user_id
LEFT JOIN companies c ON c.uid = s.uid
LEFT JOIN users u ON u.uid = s.uid
WHERE COALESCE(u.uid, c.uid) IS NOT NULL
AND (m.uid_recipient = 292 AND deleted_recipient = '0')
OR (m.uid_sender = 292 AND deleted_sender = '0')
ORDER BY datetime DESC
このクエリは実行されますが、3つの結果を返す必要がある空の結果セットを返します。
メッセージは、送信者のIDと受信者のIDのテーブルにあります。今私がやろうとしているのは、相手の情報を行に参加させることです。したがって、私のcaseステートメントは、受信者IDが現在のユーザーのIDであるかどうかを評価し、そうでない場合は、@ user_id変数を相手のIDに設定して、相手の情報をその行に結合するために使用できるようにする必要があります。
メッセージテーブルは次のようになります(関連する列):
----------------------------------------------
|uid_sender |uid_recipient |message |
----------------------------------------------
|292 |1040 |Test 3 |
----------------------------------------------
|1040 |292 |Test reply |
----------------------------------------------
|292 |1040 |First msg |
----------------------------------------------
columnの値が変数に割り当てられていないと思う傾向がありますが、このクエリをデバッグして@user_idに割り当てられた値を返す方法がわかりません。とにかくmysqlクエリで値をダンプすることはありますか?
どんな助けでも大歓迎です。
ありがとうございました。