我有两个表Event
和EventCategory
。我使用zii.widgets.grid.CGridView
小部件来显示管理部分中的所有事件。
我在表之间创建了如下关系:
EventCategory模型中的关系:
'事件' =>阵列(self:: HAS_MANY,"事件","category_id添加"),
事件模型中的关系:
下面是我用来显示事件的代码:'category' => array(self::BELONGS_TO, 'EventCategory', 'category_id'),
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'event-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'summaryText'=> '',
'columns'=>array(
array('header'=>'Id','name'=>'event_id','filter'=>''),
'event_code',
'category.evntcatm_name',
'event_name',
array(
'class'=>'CButtonColumn',
'htmlOptions'=>array('class'=>'actions aligncenter'),
'deleteButtonImageUrl'=>false,
'updateButtonImageUrl'=>false,
'viewButtonImageUrl'=>false
),
),
)); ?>
'category.evntcatm_name'
不显示任何内容。它只是创建空白列与NO ERROR。
请尝试一下
$data->category->evntcatm_name
您应该使用如下代码:
'columns' = array(
/*YOUR DATA*/
array(
'name' => 'category_id',
'value' => function($data) {
return !empty($data->category) ? $data->category->evntcatm_name : null;
}),
)
这种方法可以解决"试图获得非对象的属性"的问题。如果您在网格中看到空白单元格,这意味着您错过了关系(或者它不存在,以这种方式,您应该检查关系条件或数据库)
以下是一些大胆的猜测:
- 类别。Evntcatm_name拼写正确吗?
- 是否有实际数据在evntcatm_name字段开始?
我知道这可能听起来很简单,但错误几乎必须在这个级别上。尝试使用主键找到一个类别,并输出它的evntcatm_name。
$cat = EventCategory::model()->findByPk(1);
echo $cat->evntcatm_name;
也许你可以分享这两个表的模式?
可以使用
<>之前阵列('header' => '类别标题','value' => '$data->category->evntcatm_name'),之前代替'category.evntcatm_name'
模型实例现在在cgview中不是对象:试着
$data['category']['evntcatm_name'];