Php 获取类别和子类别Codeigniter

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

我在从同一个表中获取子类别时遇到了一个问题,子类别有一个表示主类别的parentid

我错在哪里

我的结构是下一个

控制器:

$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);