有一份商品目录。每一项都位于类别下。对于每个类别,我们可以拥有具有不同权限(管理员、专家、用户)的用户。添加项目时,我们选择可见性:(1) -对所有人可见(2) -仅对此项目发布的类别的管理员和专家可见(3) -对此项目发布的类别的所有成员可见(0) -对所有人隐藏(只有创建者可以看到)。
假设我有500个标题中有"Keyboard“的项目。它们中的大多数属于不同的类别。这些500中只有1项具有隐私-2(对于该类别的专家和管理员可见),并且位于"Logitech“类别下。当我作为"Logitech“类别的管理员在搜索中键入”键盘“时,我应该看到搜索找到了500个项目,并显示了其中的10个项目。如果只是一个普通用户(不是管理员或专家),在搜索中键入“键盘”,他将看到,搜索找到了499个项目,并向他显示这499个项目中的10个。
是抓取20个项目而不是10个项目,并检查每个项目的隐私,然后在搜索结果中只显示10个项目是唯一可能的解决方案吗?但是,如果所有这20个将是“隐藏的用户”呢?
提前感谢您的回复。
数据库草图:
1)项目itemsid、标题、category_id、可见性
2)分类:id、标题
3) category_userid、user_id、category_id、角色(专家、管理员、用户)
4) usersid,name
发布于 2012-08-09 21:30:36
下面这样的代码可能会起到作用:
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。
https://stackoverflow.com/questions/11884310
复制相似问题