0

我有两张桌子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创建空白列。我在这里缺少什么。

4

5 回答 5

3

请尝试类似的东西

$data->category->evntcatm_name
于 2013-06-13T04:36:32.360 回答
1

你应该使用这样的代码:

'columns' = array(
    /*YOUR DATA*/
    array(      
        'name' => 'category_id', 
        'value' => function($data) {
           return !empty($data->category) ? $data->category->evntcatm_name : null;
    }),
)

这种方式可以解决“试图获取非对象的属性”的问题。如果您在网格中看到空白单元格,这意味着您错过了关系(或者它不存在,这样您应该检查关系条件或数据库)

于 2013-06-14T07:13:57.170 回答
0

以下是一些疯狂的猜测:

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

我知道这听起来可能太简单了,但错误几乎必须在那个级别。尝试使用主键查找类别并将其输出为 evntcatm_name。

$cat = EventCategory::model()->findByPk(1);
echo $cat->evntcatm_name;

也许您可以为这两个表共享您的架构?

于 2013-06-13T08:10:14.463 回答
0

您可以使用

    大批(
              '标题' => '类别标题',
              '值' => '$data->category->evntcatm_name'
    ),

而不是“category.evntcatm_name”

于 2013-06-13T13:16:16.183 回答
-1

模型实例现在不是 Cgidview 中的对象:尝试

$data['category']['evntcatm_name'];
于 2013-06-13T05:40:49.947 回答