これがあなたのための一般的なレイアウトです、あなたが言及したように3つのテーブルを作ります、私は例として以下に概説しました
[表]
- ユーザー
- フォロワー
- 投稿
usersテーブルには、少なくともuserid(自動インクリメント値/主キー)のような列が必要です。
followersテーブルには、usersテーブルのuseridと一致するuseridのようなものが必要です。これは、usersテーブルのフォロワーのID番号も持つfollowid列です。
次に、投稿テーブルにもユーザーIDが必要になるため、各投稿が作成されると、ユーザーテーブルのIDが使用されます。
次に、次のようなことを行う必要があります:
SELECT p.*
FROM posts AS p
WHERE p.userid IN (SELECT followid FROM followers WHERE userid = ###)
ORDER BY p.date DESC
これを理解するために、ユーザーIDをどのように取得しているかによって異なります。 Facebookのようなもののように、ユーザーがログインした後にセッションを使用してユーザーIDを渡す場合は、userid=###をuserid="。$_SESSION['userid']のようなものに変更できます。ただし、実際にはユーザーIDを渡す方法によって異なりますが、上記の方法で少なくともある程度始めることができます。
テーブルが大きくなったときに結合がすばやく行われるように、userid、followid列にインデックスを付けるようにしてください。