李记辉 2015-05-22 17:22:29 4912次浏览 0条评论 0 0 0

model:

class Questionnaire extends \app\core\base\BaseActiveRecord
{
    // 添加的额外字段
    public $audience_num;
    public $opt;
}

controller:

// 这个是按照文档里走的
$query = Questionnaire::find();
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize' => '3']);
$model = $query->offset($pages->offset)
    ->limit($pages->limit)
    ->orderBy($sort->orders)
    ->all();

// 关联另外一张表,同一个问卷调查下有多个问题,一个问题有多个参与者
foreach ($model as &$value) {
    // 计算参与者,由于参与者可能重复,所以用了distinct
    $value['audience_num'] = Yii::$app->db->createCommand('SELECT count(distinct audience_id) FROM mls_questionnaire_audience_answer where questionnaire_id='.$value['questionnaire_id'])->queryScalar();
    // 计算问题个数
    $value['opt'] = Yii::$app->db->createCommand('SELECT count(distinct question_id) FROM mls_questionnaire_question where questionnaire_id='.$value['questionnaire_id'])->queryScalar();
    // 由于是引用,为了最后一条记录正确,用unset清楚内存
    unset($value);
}

return $this->render('index', [
    'model' => $model,
    'pages' => $pages,
    'sort' => $sort,
]);

view:

<?php foreach ($model as $row ): ?>
    <tr>
        <td><?php echo $row['questionnaire_id']?></td>
	<td><?php echo $row['questionnaire_title']?></td>
	<td><?php echo $row['opt']?></td>
	<td><?php echo $row['audience_num']?></td>
<?php endforeach;?>
    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册