私は4つのテーブルを持っています(他の多くのテーブルの中で-関連するものだけを表示しています)。彼らです:
- 「ユーザー」
- ID
- 名前
- role_id
- 「役割」
- ID
- 名前
- "chapter_role_view_permissions"
- ID
- chapter_id
- role_id
- 「チャプター」
- ID
- 名前
すべてのユーザーのリスト、ロール名、ユーザーごとのすべてのチャプター、および各チャプターへの表示アクセス権があるかどうかを返すクエリを作成しようとしています。2 人のユーザーと 2 つのチャプターがあるとします。ユーザー 1 は role_id=1 で、ユーザー 2 は role_id=2 です。chapter_role_view_permissions には 1 つのレコード ( id:1 | chapter_id: 1 | role_id: 1 ) があり、これは role_id=1 を持つユーザーのみがチャプター 1 を表示できることを意味します。
探しているクエリ結果は次のようになります。
|---users.id---|--roles.id---|---chapters.id--|-can_view_chapter-|
|----- 1 ------|----- 1 -------|------- 1 --------|---- ------- 1 -----------|
|----- 1 ------|----- 1 -------|------- 2 --------|---- ------- 0 ----------|
|----- 2 ------|----- 2 -------|------- 1 --------|---- ------- 0 ----------|
|----- 2 ------|----- 2 -------|------- 2 --------|---- ------- 0 ----------|
クエリがどのように見えるか考えていますか? chapter_role_view_permissions に「allowed」という新しいフィールドを作成し、allowed=1 または allowed=0 のロール タイプごとに新しいレコードを挿入する必要はありません。