CodeIgniter - 活动记录加入

时间:2013-11-09 23:22:00

标签: mysql codeigniter activerecord join

我的CodeIgniter模型中有一些代码:

        $this->db->where('building_active', 1);
        $this->db->select('*');
        $this->db->from('buildings');
        $this->db->join('users_buildings', 'users_buildings.building_id = buildings.building_id');
        $this->db->join('buildings_levels', 'buildings_levels.level_id = users_buildings.level_id');
        $buildings = $this->db->get()->result();

我想做什么:

  1. 如果可能,我想选择所有建筑物并加入users_buildings。目前的问题是,只有在users_buildings中具有相应条目的建筑物才会被选中。

  2. 由于第二个连接子句没有level_id(如果没有可用于该建筑物的users_building),则必须有一个回退来将join子句更改为buildings_levels.level_id = 0

  3. 我希望它清楚我的意思。我不知道这是否可能。

1 个答案:

答案 0 :(得分:1)

通过将内部联接更改为左联接来回答您的第一个问题:

$this->db->join('users_buildings', 'users_buildings.building_id = buildings.building_id', 'left');
$this->db->join('buildings_levels', 'buildings_levels.level_id = users_buildings.level_id', 'left');

这将为缺失值返回null。如果您希望null为0null或其他内容,我不太明白。