0

我有一个包含这些字段的模型:

id , name , parent_id

我在这张表中存储了一个分层结构。

somw 示例记录是:

1 - fruits - 0
2 - foods -  0
3 - colors - 0
4 - apple -  1
5 - red -    3   
6 - meat-    2

在管理(管理)页面的网格视图中,我想显示父名称而不是其 ID。所以我在模型(东西)中定义了这种关系。

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

并认为:

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

?>

但是我在管理页面上收到“尝试获取非对象的属性”错误。似乎是因为根专利的 parent_id 为 '0' 并且没有 id=0 的记录。

我该如何处理这个问题?

提前谢谢你。

4

1 回答 1

1

您必须在值表达式中添加一个检查

array(
    'name'=>'parent.name',
    'value'=>'($data->parent_id)?data->parent->name:""'
)

编辑

为了获得最佳实践,您应该parent_id留空而不是输入零。如果不是每次您想使用$model->parent您访问父级,则必须执行上述检查。也可以使用网格parent.name来代替上面的。

'name',
'parent.name',
array(
    'class'=>'CButtonColumn',
),
于 2013-06-20T06:47:05.457 回答