Yii 1. *:如何将所有相关表数据作为数组获取

时间:2016-07-04 03:48:59

标签: yii

我的数据库查询:

        $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传递时,只显示父表数据。

1 个答案:

答案 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);
}

之后,您可以尝试代码并将所有相关表数据作为数组获取。