1

これは私のカテゴリー表です

id category  parent_category_id
1  animal      NULL
2  vegetable   NULL
3  mineral     NULL
4  doggie      1
5  potato      2
6  hunting     4

私の yii グリッド ビューには、名前の代わりに親カテゴリ ID が表示されます。グリッド ビューで親カテゴリ名を表示する方法を教えてください。

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'category-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        'id',
        'category',
        'parent_category_id',
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

上記のコードでどのような変更を加える必要がありますか。ありがとう。

4

2 に答える 2

1

最初のステップ - モデル クラスでリレーションを定義します。

public function relations()
{
    return array(
        'parent'=>array(self::BELONGS_TO, 'Category', 'parent_category_id'),
    );
}

ここで、Category- は AR モデル クラスの名前、parent_category_id- それ自体を参照する外部キーです。

ステップ 2 - CGridView、columns属性:

...
'columns'=>array(
    'id',
    'category',
    array(
        'name'=>'Parent category', // col title
        'value'=>function (Category $data){
            if($data->parent_category_id)
                return $data->parent->category; // "parent" - relation name, defined in "relations" method 

            return "-= root category =-";


        }
    ),
)
...

注: 上記のコードには、php バージョン>=5.3 が必要です。それ以外の場合は、匿名関数の使用を避ける必要があります

于 2013-09-04T10:36:06.290 に答える
0
'columns'=>array(
 .....
  array('name'=>'id','value'=>'$data->Category->name'),
 )

または呼び出しgetCategoryName()内に関数を作成し、名前を取得します

'columns'=>array(
 .....
  array('name'=>'id','value'=>'$data->getCategoryName()'),
 )

 public function getCategoryName()
    {
       $equery= Category::model()->find("id=$this->id"); 
       $cnm=$equery['Category'];
       return $cnm;
    }
于 2013-09-04T07:21:28.780 に答える