在codeginiter中加入两个表

时间:2016-10-24 20:12:38

标签: php mysql codeigniter

我有两张桌子,我想加入&显示用户角色的名称。这是情况

我的2个表是users_mlh& user_roles_mlh

在users_mlh表的角色列上,我存储用户角色的ID,user_roles_mlh包含名称&用户角色的ID。我想要做的是在我的视图中显示用户角色的名称。

我的表格如下。

Screen1

我在我的模型中试过这个

$this->db->select('*');
$this->db->from('user_roles_mlh');
$this->db->join('users_mlh', 'users_mlh.role = user_roles_mlh.id');
$this->db->where('users_mlh.role = user_roles_mlh.id');

$query = $this->db->get();

return $query->result_array();

但从上面我得到类似的东西

https://s4.postimg.org/ot5nyr1hp/Untitled_122.jpg

目前它列出了所有用户级别而不是每个用户的角色

3 个答案:

答案 0 :(得分:1)

案例1:如果您想直接访问所有数据而不使用where condition

  $this->db->select( "*" );
  $this->db->from( 'users_mlh' );
  $this->db->join('user_roles_mlh', 'user_roles_mlh.id = users_mlh.role');

案例2:使用Where条件和特定列数据

   $this->db->select( 'user_roles_mlh.role_type,users_mlh.name' );
  $this->db->from( 'users_mlh' );
  $this->db->join('user_roles_mlh', 'user_roles_mlh.id = users_mlh.role');
   $this->db->where('users_mlh.id =',1);

最后通过

获得结果
  $query = $this->db->get();
      return $query->result();    

答案 1 :(得分:0)

如果我使用你的表,你应该有以下要求:

SELECT users_mlh.*, JOIN user_roles_mlh.role_type
FROM users_mlh -- list all users
  LEFT JOIN user_roles_mlh -- and joind by roles
    ON users_mlh.role = user_roles_mlh.id -- condition for joining

通过此请求,您将拥有所有用户,并且角色文本已关联。

因此,如果此请求有效,请在ORM上使用相同的逻辑

答案 2 :(得分:0)

无需为获取角色名称编写单独的查询。在获取用户数据时加入Roles表。

$this->db->select('users_mlh.*,user_roles_mlh.role_type');
$this->db->from('users_mlh');
$this->db->join('user_roles_mlh', 'user_roles_mlh.id = users_mlh.role');

$query = $this->db->get();

return $query->result_array();

试试这个。