我想为某些用户隐藏一些产品,我有产品表和用户表。
例如,
我有:
product a
product b
product c
product d
...
user 1
user 2
user 3
user 4
...
我知道的一件事是,我可以在产品表中添加一个hide_status
行,将其设置为1隐藏此产品,但这是全局的,这意味着所有用户都看不到。
还是我创建一个组,如果我有100个产品,那么该组中的用户看不到产品a,那么我创建了100个组?
我想知道逻辑将如何发展以及如何做到这一点?
预先感谢
任何帮助将不胜感激
答案 0 :(得分:0)
您需要使用关联用户->产品创建新表
1)用户表:
UserId Name...
1 Jhon
产品表:
ProductId Name ...
1 SomeProduct
2)HideProducts表
Id UserID ProductID
1 1 1
,您可以将任意数量的产品分配给任何用户
答案 1 :(得分:0)
如果用户不想根据他们所属的角色或组来查看某些产品,则必须将group_id
或role_id
放在产品表上的用户表上。在这种情况下,由于多个组也可能看不到产品,因此您可以使用逗号分隔的ID列表,这样就无需创建一个新表。
用户表
id name group_id
产品表
id name group_ids
1,2,3
现在在为用户列出产品列表时,在代码中检查用户group_id是否在产品group_ids中,否则将跳过。
for ($i=0;$i<count(products);$i++){
if(!in_array($userGroupId, explode(",",$products[i]['group_ids']))) continue;
//display product for user
}
答案 2 :(得分:0)
您可以在status
表和Users
表中添加Product
。然后在用户和产品表的列中添加要隐藏的相同状态。
然后,使用条件SELECT * FROM Product WHERE User.status!=Product.status
示例::如果user1
,user3
和product3
的状态均为2,则user1
和user3无法显示product3
答案 3 :(得分:0)
再创建一个表,并在新创建的第三个表中添加产品和用户表的引用,因此您可以轻松地获得哪个用户有权查看哪个产品。
我希望这能解决您的问题。