我有一个包含这些字段的模型:
id , name , parent_id
我在此表中存储了一个租用结构。
somw示例记录是:
1 - fruits - 0
2 - foods - 0
3 - colors - 0
4 - apple - 1
5 - red - 3
6 - meat- 2
在manage(admin)页面的gridview中,我想显示父名称而不是其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的记录。
我该如何处理这个问题?
先谢谢你。
答案 0 :(得分:1)
您必须在值表达式
中添加一个检查array(
'name'=>'parent.name',
'value'=>'($data->parent_id)?data->parent->name:""'
)
修改强>
为了获得最佳实践,您应该将parent_id
留空,而不是将其归零。如果不是每次都想使用$model->parent
访问父级,则必须执行上述检查。也可以使用网格parent.name
代替上面的网格。
'name',
'parent.name',
array(
'class'=>'CButtonColumn',
),