有一个项目目录。每个项目都位于类别下。对于每个类别,我们可以拥有具有不同权限的用户(管理员、专家、用户)。当我们添加一个项目时,我们选择可见性: (1) - 所有人可见 (2) - 仅对发布此项目的类别的管理员和专家可见 (3) - 该项目发布的类别的所有成员都可见 (0) - 对所有人隐藏(只有创建者可以看到)。
假设我有 500 个标题中带有“键盘”一词的项目。其中大多数属于不同的类别。这 500 项中只有 1 项具有隐私 - 2(该类别的专家和管理员可见)并且位于类别“Logitech”下。当我作为“Logitech”类别的管理员在搜索中输入“键盘”时,我应该看到搜索找到了 500 个项目,并向我显示其中 10 个。如果只是普通用户(不是管理员或专家),在他将看到的搜索中键入“键盘”,搜索找到 499 个项目,并向他显示这 499 个项目中的 10 个。
抓取 20 个项目而不是 10 个项目并检查每个项目的隐私,然后在搜索结果中仅显示 10 个项目是唯一可能的解决方案吗?但是如果这 20 个都“对用户隐藏”怎么办?
预先感谢您的回复。
数据库草图:
1)items[id、标题、category_id、可见性]
2) 类别:[id, 标题]
3)category_user[id,user_id,category_id,角色(专家,管理员,用户)]
4) 用户[id, 名称]
最佳答案
像这样的事情可能会起作用:
SELECT i.*,c.*,cu.*u.*
FROM items i,categories c, category_user cu, user u
WHERE i.title LIKE '%$search%'
AND i.category_id=c.id
AND cu.category_id=c.id
AND u.id=cu.user_id
AND cu.role='expert'
AND i.visibility=1
根据用户数据更改 cu.role 和 i.visbility。
关于php - 使用不同权限的php进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11884310/