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')
                     ->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 に答える
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 に答える