php-为某些用户隐藏某些产品

时间:2018-08-27 07:51:07

标签: php

我想为某些用户隐藏一些产品,我有产品表和用户表。

例如,
我有:

product a
product b
product c
product d

...

user 1  
user 2
user 3
user 4

...

  1. 情况1,我希望用户1和用户4看不到产品a,同时其他用户也可以看到。
  2. 情况2,我希望用户5看不到产品c,而其他用户可以看到。

我知道的一件事是,我可以在产品表中添加一个hide_status行,将其设置为1隐藏此产品,但这是全局的,这意味着所有用户都看不到。

还是我创建一个组,如果我有100个产品,那么该组中的用户看不到产品a,那么我创建了100个组?

我想知道逻辑将如何发展以及如何做到这一点?

预先感谢
任何帮助将不胜感激

4 个答案:

答案 0 :(得分:0)

您需要使用关联用户->产品创建新表

1)用户表:

UserId Name...
1      Jhon      

产品表:

ProductId Name ...
1         SomeProduct   

2)HideProducts表

Id UserID ProductID
1    1       1

,您可以将任意数量的产品分配给任何用户

答案 1 :(得分:0)

如果用户不想根据他们所属的角色或组来查看某些产品,则必须将group_idrole_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

示例::如果user1user3product3的状态均为2,则user1和user3无法显示product3

答案 3 :(得分:0)

再创建一个表,并在新创建的第三个表中添加产品和用户表的引用,因此您可以轻松地获得哪个用户有权查看哪个产品。

我希望这能解决您的问题。