数据未显示在CGridView Widget中的另一个表中

时间:2013-06-13 04:25:20

标签: php yii widget

我有两张表EventEventCategory。我正在使用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 创建空白列。我在这里失踪了。

5 个答案:

答案 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)

以下是一些猜测:

  • category.evntcatm_name是否正确拼写?
  • evntcatm_name字段中是否有数据开头?

我知道这可能听起来太简单了,但错误几乎必须在那个级别上。 尝试使用主键查找类别并输出它的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'];