使用CActiveDataProvider获取所有数据

时间:2013-12-07 03:12:07

标签: yii

我有一个模型InboxMessageHelper,关系像 'message','sender'和'receiver',我使用以下条件查询数据:

$model = new CActiveDataProvider('IndividualMessageHelper', array(
                    'criteria'=>array(
                    'condition'=>'receiver_id = '.Yii::app()->user->id,
                        'order'=>'message.created_at DESC',
                        'with'=>array('message', 'sender', 'receiver'),
                        'together'=>true,
                ),
        ));

我想获取控制器内的所有数据(包括关系数据)并形成JSON,但问题是我无法访问相关的字段数据。我可以看到,当我使用

时,数据可用
CVarDumper::dump()

当我尝试编码$ model->数据时,只有来自当前表的数据才会被编码。我应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

我认为CActiveDataProvider不能以这种方式使用。您需要使用该模型。所以你在控制器中需要这样的东西。

    $models = IndividualMessageHelper::model()->findAll('receiver_id = '.Yii::app()->user->id);
foreach($models as $model){
    $json[] = $model->getAttributes; //This won't get any model properties you've declared 
yourself, only database columns
}

    //Now get the related records and add them to the array.
    array_push($json, $model->getRelated('message')->getAttributes());
    array_push($json, $model->getRelated('sender')->getAttributes());
    array_push($json, $model->getRelated('receiver')->getAttributes());

    echo json_encode($json);