我的数据库查询:
$enqModel = EnquiryDetail::model(); $criteria = new CDbCriteria(); $criteria->together = true; $criteria->with = array( 'courseOffered', 'courseOffered.course' => array('alias'=>'coc'), 'courseSuggesteds', 'courseSuggesteds.course' => array('alias'=>'csc'), 'courseTakens', 'courseTakens.course' => array('alias'=>'ctc'), 'courseOffered.course.stream' => array('alias'=>'cos'), 'courseSuggesteds.course.stream' => array('alias'=>'css'), 'courseTakens.course.stream' => array('alias'=>'cts'), 'org', 'branch', 'attendances', 'heardAbout', 'mode', 'enrolledBy', 'followups', 'followups.followupsBy' => array('alias'=>'followups_by'), 'batchStudents', 'batchStudents.batch' => array('alias'=>'batch'), 'batchStudents.batch.batchDays' => array('alias'=>'batch_days'), 'paymentsPlans' => array('alias'=>'emiPlans') ); $result = $enqModel->findAllByAttributes(array('enquiry_id'=>$enqId),$criteria); return $result;
现在我希望它返回all作为restApi的数组,所以我只传递id,它会将所有相关数据作为数组返回。
问题是当我执行findAll或findAllByAttributes时显示所有结果但是当我尝试将其作为CJSON :: enode传递时,只显示父表数据。
答案 0 :(得分:0)
请您尝试以下代码:
在YII Framework文件中进行更改。
文件路径: ../ yii / framework / db / ar / CActiveRecord.php
CActiveRecord.php (添加代码行号码: - 1871)
/**
* @return CMapIterator the iterator for the foreach statement
*/
public function getIterator()
{
$attributes=$this->getAttributes();
$relations = array();
foreach ($this->relations() as $key => $related)
{
if ($this->hasRelated($key))
{
$relations[$key] = $this->$key;
}
}
$all = array_merge($attributes, $relations);
return new CMapIterator($all);
}
之后,您可以尝试代码并将所有相关表数据作为数组获取。