我有一个模型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->数据时,只有来自当前表的数据才会被编码。我应该怎么做呢?
答案 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);