在Codeignitor3.1.6中,我有两个表 - 类别和项目。我想列出所有类别的项目计数(有效='仅限1')。例如,我有6个类别,并希望显示所有这些类别,即使它们的计数为零,如下所示:
这是我的模特:
public function count_items()
{
$q = $this->db->select('categories.name, COUNT(items.id) as xx')
->from('categories')
->join('items', 'categories.id = items.category_id', 'left')
->group_by('categories.name')->get();
return $q;
}
我想只计算items.active =' 1',但如果我使用 - > where(' items.active',' 1') ,该清单错过了第3类和第5类。 请告知如何实现这一目标。
答案 0 :(得分:0)
我有一点玩这个。
您看到这些结果的原因是由于该类别的非现有项目没有条目,因此测试items.active = 1会导致NULL。
所以我添加了一个处理那个的地方,即or_where('items.active',NULL)
我创建了一个新函数(用于与原始函数一起测试)并添加此额外命令可以处理...
所以你的功能变成......
// Original count_items() with added or_where()
public function count_items_active()
{
$q = $this->db->select('categories.name, COUNT(items.id) as xx')
->from('categories')
->join('items', 'categories.id = items.category_id', 'left')
->where('items.active',1)
->or_where('items.active',NULL)
->group_by('categories.name')
->get();
return $q;
}