数据不是从CGridView小部件中的另一个表显示的


Data isn't displaying from another table in CGridView Widget

我有两个表EventEventCategory。我使用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'];