Php 获取类别和子类别Codeigniter
我在从同一个表中获取子类别时遇到了一个问题,子类别有一个表示主类别的parentid 我错在哪里 我的结构是下一个 控制器:Php 获取类别和子类别Codeigniter,php,codeigniter,Php,Codeigniter,我在从同一个表中获取子类别时遇到了一个问题,子类别有一个表示主类别的parentid 我错在哪里 我的结构是下一个 控制器: $cats = $this->categories_model->getCategories(); foreach($cats as $ct){ $cat_id = $ct->id; } $data['categories'] = $this->categories_model->getCategorie
$cats = $this->categories_model->getCategories();
foreach($cats as $ct){
$cat_id = $ct->id;
}
$data['categories'] = $this->categories_model->getCategories();
$data['subcategories'] = $this->categories_model->getSubcategories($cat_id);
型号:
public function getCategories() {
$query = $this->db->get_where('categories', array('visible' => 1, 'parentid' => 0));
return $query->result();
}
function getSubcategories($cat_id) {
$this->db->select('*');
$this->db->from('categories');
$this->db->where(array('parentid' => $cat_id, 'visible' => 1));
$query = $this->db->get();
return $query->result();
}
视图:
我认为你的控制器出了问题。你现在有
$cats = $this->categories_model->getCategories();
foreach($cats as $ct){
$cat_id = $ct->id;
}
$data['categories'] = $this->categories_model->getCategories();
$data['subcategories'] = $this->categories_model->getSubcategories($cat_id);
您正在分配$cat_id
,并且在foreach
循环中不使用它。您仅使用最后一个类别id来选择子类别
您需要重新排列代码,以便可以获得当前类别的所有子类别
这可能不仅仅是将子类别选择代码放入循环中,因为每次都会覆盖变量,产生类似的效果。您确定
$cat\u id
有值吗?是的,有值,但奇怪的是只有1个值,我在数组中有两个ID。我已经添加了表结构和数据。所以,在这种情况下,创建另一个带有子类别的表会很好吗?这取决于您。假设设置正确,迭代数据没有问题。您也可以只附加到要返回的数组中。
id parentid name description metatags visible
1 0 Boots Boots boots 1
2 1 Man boots man boots NULL 1
3 1 Women boots women boots NULL 1
5 0 Jackets Jackets NULL 1
6 5 Women jackets Women jackets NULL 1
$cats = $this->categories_model->getCategories();
foreach($cats as $ct){
$cat_id = $ct->id;
}
$data['categories'] = $this->categories_model->getCategories();
$data['subcategories'] = $this->categories_model->getSubcategories($cat_id);