0

我为事件类别创建了一个模型,为事件创建了另一个模型。当用户选择任何特定的事件类别时,我想显示该类别下的所有事件。

以下是我给他们的模型的关系。EventCategory.php 模型:

return array(
    'event' => array(self::HAS_MANY, 'Event', 'event_category_id'),
);

Event.php 模型:

return array(
     'category' => array(self::BELONGS_TO, 'EventCategory', 'event_category_id'),
);

当我尝试在事件类别视图中返回事件时,返回NOT SET

<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
    'evntcatm_id',
    'evntcatm_name',
    'evntcatm_desc',
    'evntcatm_img',
    'event.evntm_evntcatm_id',
    'event.evntm_name',
),
)); ?>

我哪里错了?

4

3 回答 3

1

event您的类别中的关系是 a HAS_MANY$category->event一组记录也是如此Event。那么 Yii 应该如何知道,如何处理这个对象列表呢?不过,您可以将吸气剂添加到您的Category模型中。例如对于事件名称:

public function getEventNames()
{
    $names = array();
    foreach($this->events as $event) {
         $names[] = $event->eventm_name;
    }
    return implode(', ', $names);
}

然后eventNames在你的detailview中使用,就好像它是一个常规的类别属性一样。

于 2013-04-29T07:05:43.663 回答
0

看起来好像您正在尝试返回填充了事件类别信息的事件列表。我不会从事件类别中去,而是从事件中去。然后您可以使用快捷方式访问事件类别信息。像这样的东西:

在控制器中

$model = Event::model()->fetchAll();

然后在视图中你的属性数组看起来像

'attributes' => array(
   'category.evntcatm_id',
   'category.evntcatm_name',
    ...
   'evntm_evntcatm_id',
   'evntm_name',
),
于 2013-04-30T01:28:30.900 回答
0

我使用 loadModel 来获取类别 ID,然后将 ID 传递给 dataProvider 以比较数据库中的数据并返回结果。

EventCategoryController.php

public function actionView($id)
{
    $this->layout = 'main';
    $model = $this->loadModel($id);

    $criteria = new CDbCriteria;
    $criteria->compare('evntm_sts','a',true);
    $criteria->compare('evntm_evntcatm_id',$model->evntcatm_id,true);

    $dataProvider = new CActiveDataProvider('Event', array(
        'criteria'=>$criteria,
    ));
    $this->render('view',array(
        'model'=>$model,
        'dataProvider'=>$dataProvider,
    ));
}

在视图中:

<?php $this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_event',
    'summaryText'=> '',
)); ?>
于 2013-04-29T14:29:03.557 回答