したがって、ユーザー、投稿、プライベートの 3 つのテーブルがあります。この例では、lizzy は非公開の投稿「Dating」を作成し、彼女のガールフレンドのみが非公開テーブルで「authorized_user_ids」を参照し、投稿テーブルで彼女自身の「user_id」を参照したいと考えています。
users
user_id user_name
1 tony
2 steph
3 lizzy
4 adam
5 lara
6 alexa
posts
post_id user_id post_name private (0 is public, 1 is private to authorized users)
1 1 Coding 0
2 3 Dating 1
3 3 Show Me 0
private
private_id post_id authorized_user_ids
1 2 2,5,6
非公開の投稿者 user_id と authorized_user_ids のみが lizzy による「Dating」投稿を表示する必要がありますが、lizzy による「Show Me」投稿はすべての人が表示できる必要があります。ログアウトしたユーザーと承認されていないユーザーには何も表示されません。それが最も効率的な方法ですか、それとも次のようにする必要があります。
private
private_id post_id authorized_user_id
1 2 2
2 2 5
3 2 6
それが私の最初の質問です。私の 2 番目は、mysql db からデータをプルするときに、php (authorized_user_ids に表示) でそれに取り組むための最良の方法は何でしょうか? posts テーブルの「private」フラグに基づいて 2 番目のクエリを実行しますか? 1 の場合、while ループでクエリを実行してプライベート テーブルから「authorized_user_ids」を取得し、それがログイン ユーザーの $logged_in_id と一致する場合、「Dating」を表示しますか? または、プライベート テーブルと posts テーブルの「post_id」を使用して、「authorized _user_ids」を使用してメイン クエリのどこかに結合する必要がありますか? これを最も効率的に行う方法についてのヘルプをいただければ幸いです。