0

アクティビティ (アクティビティ) のリストを取得し、左結合を使用してアクティビティを作成したユーザー データ (ユーザー) を取得しています。私のアプリケーション内で、ユーザーは相互にフォローすることができます。

これは私の現在のクエリで、自分が投稿していないすべてのアクティビティを取得します ($user_id)

SELECT 
     activities.id, activities.user_id, users.id, users.name
FROM 
     activities
LEFT JOIN 
     users on activities.user_id = users.id
WHERE 
     users.id != $user_id

アクティビティとユーザーのテーブルとは別に、アプリケーションにはフォロワーと呼ばれる別のテーブルがあります。

followers

id | user_id_1 | user_id_2 | followed_back
 1      1           3             1       
 2      2           3             0
 3      3           1             1

あなた ($user_id) が各アクティビティに参加している特定のユーザーをフォローしているかどうかを確認する必要があります。おそらく、この新しいフィールドを true/false/null 値を表す「user_followed」と呼びますか?

たとえば、私は user_id = 1 です。上記の表に基づくと、これは私が user_id 3 をフォローしたことを意味します。アクティビティがフェッチされ、user_id 3 が参加/担当している場合、新しいフィールド「user_followed」は true になります。

したがって、別の SELECT クエリを組み込んで、ユーザーがフォローされているかどうかを確認する必要があると思います。

(SELECT 
     * 
FROM 
     followers
WHERE
     user_id_1 = $user_id AND user_id_2 = users.id
)

これを最初のクエリに組み込み、はいまたはいいえを表す新しいフィールドを作成する方法がほとんどわかりません。どんな助けでも大歓迎です!

4

0 に答える 0