This question is unlikely to help any future visitors; it is only relevant to a small geographic area, a specific moment in time, or an extraordinarily narrow situation that is not generally applicable to the worldwide audience of the internet. For help making this question more broadly applicable, visit the help center。
6年前关闭。
我想向特定用户显示一些数据。我已经做过类似的事情,但是区别是角色号是静态的。例如,我添加了一个列并为特定用户提供了“ 1”,所以我写了if($ role == 1){做某事}。很好,因为它是一个静态数字。通过这种方式,我只向角色1的用户显示秘密信息。
现在,我添加了一个新功能;管理员可以上传属于某个组的特定用户的信息。团体的信息会有所不同。数据可以很好地存储和检索。那不是我的问题。例如,我想向A组中的用户'a1','a2','a3'显示文档A(这是随机名称,我只是想让您更方便),向用户'a4'显示文档B, 'a7','a35','a40'(属于B组)等等。
我知道如何存储/检索文档'A'并将其与用户'a1','a2','a3'和他们的组链接起来...但是我不确定如何将每个文档显示到组中。文档A只能与一个组链接(与B,C,D等相同)。
而不是像以前那样说if($ role == 1)..我将需要if($ document == $ group)之类的东西。
我不能放“ A”或“ B”之类的东西,因为它不是静态的。
有什么帮助吗?
我敢肯定这个查询可以在没有工会的情况下完成,但这很容易阅读和理解。
6年前关闭。
我想向特定用户显示一些数据。我已经做过类似的事情,但是区别是角色号是静态的。例如,我添加了一个列并为特定用户提供了“ 1”,所以我写了if($ role == 1){做某事}。很好,因为它是一个静态数字。通过这种方式,我只向角色1的用户显示秘密信息。
现在,我添加了一个新功能;管理员可以上传属于某个组的特定用户的信息。团体的信息会有所不同。数据可以很好地存储和检索。那不是我的问题。例如,我想向A组中的用户'a1','a2','a3'显示文档A(这是随机名称,我只是想让您更方便),向用户'a4'显示文档B, 'a7','a35','a40'(属于B组)等等。
我知道如何存储/检索文档'A'并将其与用户'a1','a2','a3'和他们的组链接起来...但是我不确定如何将每个文档显示到组中。文档A只能与一个组链接(与B,C,D等相同)。
TABLES
DOCUMENTS
Number - Title - File
1 - Document A - A.doc
2 - Document B - B.doc
DOC_USERS
Doc N - User N
1 - 10
1 - 15
2 - 7
DOC_GROUPS
Doc N - Group N
1 - 1
2 - 2
而不是像以前那样说if($ role == 1)..我将需要if($ document == $ group)之类的东西。
我不能放“ A”或“ B”之类的东西,因为它不是静态的。
有什么帮助吗?
最佳答案
我会将这种逻辑移到查询而不是视图中。传递user_id作为参数,并仅返回允许用户查看的记录。看起来您的架构允许您基于您的userID或用户与组的关联来授予对文档的权限(表结构中似乎缺少该权限,但是您在描述中提到了它)
select documents.*
from documents
inner join doc_users on documents.number= doc_users.doc
where doc_users.user = ?
Union
select documents.*
from documents
inner join doc_groups on documents.number= doc_group.doc
inner join user_groups on user_groups.group = doc_groups.group
where user_groups.user = ?
我敢肯定这个查询可以在没有工会的情况下完成,但这很容易阅读和理解。