0

結果を取得したい:

parent1 : child1 child1 child1 
parent2 : child2 child2 child2 
parent3 : child3 child3 child3 
parent4 : child4 child4 child4

テーブル名は「category」、parent_id=0親クラスです。すべての父の子を取得したいです。以下のyiiフレームワークを使用するのは私のコードです:

class CtcategoryController extends GtController

{

    public function actionIndex()
    {

        $criteria = new CDbCriteria;
        $criteria -> select = 'id,name';
        $criteria -> limit = 15; 
        $criteria -> condition = 'parent_id = 0';
        $categorys = CtCategory::model()->findAll($criteria);

        foreach($categorys as $category_child){
            $criteria -> condition = 'parent_id = '.$category_child->id;
            $category_child = CtCategory::model()->findAll($criteria);
        }
             //print_r($category_child);==>Aarray()  is null;

        $this->render('index', array(
            'categorys' => $categorys,
        array('category_child' => $category_child)
        ));
    }
4

1 に答える 1

0

2 番目のクエリ用に新しい CDBCriteria を作成し、結果を配列に保存する必要があります。

class CtcategoryController extends GtController
{
    public function actionIndex()
    {
        $criteria = new CDbCriteria;
        $criteria->select = 'id,name';
        $criteria->limit = 15; 
        $criteria >condition = 'parent_id = 0';
        $categories = CtCategory::model()->findAll($criteria);

        $category_child = array();
        foreach($categories as $key => $category_parent){
            $criteria2 = new CDbCriteria;
            $criteria2->condition = 'parent_id = '.$category_parent->id;
            $category_child[$key] = CtCategory::model()->findAll($criteria2);
        }


        $this->render('index', array(
            'categories' => $categories,
            'category_child' => $category_child,
       ));
    }
}

index.php

foreach ($categories as $i => $category) :
    echo $category->id;
    foreach (category_child[$i] as $child) :
        echo $child->id;
    endforeach;
endforeach;
于 2012-06-15T08:26:25.847 に答える