应用权限和创建查询

时间:2013-10-11 04:38:25

标签: php sql codeigniter acl

我正在编写一个拥有4级用户的php应用程序 管理员,经理,组,客户端 admin将创建管理器,manager将创建组。 除客户端以外的所有客户都可以 我有一个用户表,其中包括以下字段 ID主要自动 user_name varchar唯一 经理ID GROUPID usertype int(4种类型中的一种)

如果客户不属于经理managerid下的任何经理或集团,则groupid将为0 如果客户端属于某个组,则会为其分配groupid 如果组属于经理,则会为其分配一个managerid 因此,经理可以拥有多个组,一个组可以拥有多个客户 站点以登录页面开始,成功登录后,根据usertype主页将显示客户端列表。 如果它是一个单独的客户,它将只显示他们的名字。 如果它是一个组,它将显示其组下的所有客户端和由它们创建的个人 如果它是一个经理,它应该显示所有客户在他们创建的所有组和个人之下。 我正在寻找的是实现这一工作流程的优化方法。 我可以获得管理员列表(它将是全部),组列表 - 每个人都有他们的组ID 但我对如何创建经理列表感到有点困惑。 我可以找到一个列表,其中包含managerid,并且没有groupid用于个人,并且首先在此manger下查找组,并让所有客户端都拥有这些组ID。但我认为这可以是 用sql查询实现我需要帮助来构建这样的查询。 如果可能的话,我想找出一个查询,它会给我这个列表。 我正在使用codeIgniter来构建此站点。 因此,如果对CI采用查询,那将是非常棒的。 感谢

1 个答案:

答案 0 :(得分:0)

      SELECT * 
      from 
          UserTable
      WHERE 
          groupid 
      in (select groupid from UserTable where managerid='id')

下面的代码可用于从活动记录中获取数据

      $this->db->select('u1.*');
      $this->db->from('UserTable u1');
      $this->db->join('UserTable u2', 'u1.groupid = u2.groupid');
      $this->db->where('u2.managerid', $id);
      $this->db->get();

这将生成以下查询

      SELECT `u1`.* 
      FROM (`UserTable` u1) 
      JOIN `UserTable` u2 ON `u1`.`groupid` = `u2`.`groupid` 
      WHERE `u2`.`managerid` = 1