我的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();
我想做什么:
如果可能,我想选择所有建筑物并加入users_buildings。目前的问题是,只有在users_buildings中具有相应条目的建筑物才会被选中。
由于第二个连接子句没有level_id(如果没有可用于该建筑物的users_building),则必须有一个回退来将join子句更改为buildings_levels.level_id = 0
我希望它清楚我的意思。我不知道这是否可能。
答案 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为0
,null
或其他内容,我不太明白。