0

我有一个搜索顶级父类别的 category_id 的功能。但在 1 次迭代后,它不会将值返回给控制器。

控制器:

$top_parent = $this->catalog_model->top_parent($catalog_id);

模型:

function top_parent($category_id)
    {
        $data = $this->db->select('category_id, title, parent')
                         ->where('category_id',$category_id)
                         ->get('categories')
                         ->row_array();              

        if($data['parent'] == 0){
            return $data['category_id'];   
        }
        else{
            $this->top_parent($data['parent']);
        }

    }

如何将找到的值返回给控制器?

4

2 回答 2

0

如果您确实需要按自己的方式行事..您所需要做的就是返回递归调用

function top_parent($category_id)
{
    $data = $this->db->select('category_id, title, parent')
                     ->where('category_id',$category_id)
                     ->get('categories')
                     ->row_array();              

    if($data['parent'] == 0){
        return $data['category_id'];   
    }
    else{
        return $this->top_parent($data['parent']); 
    }

}

注意线return $this->top_parent($data['parent']);

您应该返回此处,因为最终将满足条件的递归调用$data['parent'] == 0实际上将返回$data['category_id'];到调用模型函数本身而不是控制器。

于 2012-06-27T09:29:43.467 回答
0

使用这个简单的函数而不是递归。不要用递归来做你可以用简单查询做的事情。

function top_parent($category_id)
{
    $data = $this->db->select('category_id')
                     ->where('category_id',$category_id)
                     ->where('parent',0)
                     ->get('categories')
                     ->row_array();              

    return $data['category_id']; 
}

这里只添加了 parent = 0 的 where 条件

于 2012-06-27T08:03:03.117 回答