我有两张表Event
和EventCategory
。我正在使用zii.widgets.grid.CGridView
小部件来显示管理部分中的所有事件。
我在表之间创建了以下关系。
EventCategory模型中的关系:
'event'=>数组(self :: HAS_MANY,'Event','category_id'),
事件模型中的关系:
'category'=>数组(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 创建空白列。我在这里失踪了。
答案 0 :(得分:3)
请尝试类似的东西
$data->category->evntcatm_name
答案 1 :(得分:1)
你应该使用这样的代码:
'columns' = array(
/*YOUR DATA*/
array(
'name' => 'category_id',
'value' => function($data) {
return !empty($data->category) ? $data->category->evntcatm_name : null;
}),
)
这种方式可以解决“尝试获取非对象属性”的问题。如果您在网格中看到空白单元格意味着您错过了关系(或者它不存在,那么您应该检查关系条件或数据库)
答案 2 :(得分:0)
以下是一些猜测:
我知道这可能听起来太简单了,但错误几乎必须在那个级别上。 尝试使用主键查找类别并输出它的evntcatm_name。
$cat = EventCategory::model()->findByPk(1);
echo $cat->evntcatm_name;
也许你可以分享这两个表的架构吗?
答案 3 :(得分:0)
您可以使用
array( 'header' => 'Category Title', 'value' => '$data->category->evntcatm_name' ),
而不是'category.evntcatm_name'
答案 4 :(得分:-1)
模型实例现在不是Cgidview中的对象: 试试
$data['category']['evntcatm_name'];