私は自分のサイトのプロファイルに「最近のアクティビティ」タブを作成しています。また、モデレーターがサイトで発生したすべてを確認できるようにログを作成する予定です。これには、何らかのアクティビティ ログを作成する必要があります。
何が良いのかさっぱりわかりません。2 つのオプションがあります。
- 「アクティビティ」というテーブルを作成し、誰かが何かを行うたびに、アクションのタイプ、ユーザー ID、タイムスタンプなどを含むレコードをテーブルに追加します。
- 問題:テーブルが非常に長くなる可能性があります。
- 3 つすべてのテーブル (質問、回答、answer_comments) を結合し、これらすべてをアクションが実行された順序でページに何らかの方法で表示します。
- 問題: 3 つのテーブルを結合するだけで「John が Question Title Here の回答にコメントしました」と言う方法がわからないため、これは非常に困難です。
この状況でアクティビティログを作成するより良い方法を知っている人はいますか? PHPとMySQLを使用しています。これが非効率的または困難な場合は、プロファイルの [最近のアクティビティ] タブを忘れてしまうかもしれませんが、モデレーターのアクティビティ ログはまだ必要です。
while
オプション 2 のために作成し始めた SQL を次に示しますが、ループで情報をエコーするときにアクションがコメント、質問、または回答であるかどうかを検出する方法がないため、これは機能しません。
SELECT q.*, a.*, ac.*
FROM questions q JOIN answers a ON a.questionid = q.qid
JOIN answer_comments ac ON c.answerid = a.ans_id
WHERE q.user = $userid
AND a.userid = $userid
AND ac.userid = $userid
ORDER BY q.created DESC, a.created DESC, ac.created DESC
助けてくれてありがとう!