0

我正在编写一个 php 应用程序,它有 4 级用户 admin、manager、group,client admin 将创建 manager,manager 将创建 group。除客户端之外的所有客户端都可以创建客户端我有一个用户表,其中包含以下字段 ID 主要自动用户名 varchar 唯一 managerid groupid usertype int(4 种类型之一)

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

4

1 回答 1

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
于 2013-10-11T09:34:12.157 回答