分页,联查(添加额外字段) [ 2.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;?>
李记辉
注册时间:2015-05-07
最后登录:1小时前
在线时长:121小时8分
最后登录:1小时前
在线时长:121小时8分
- 粉丝12
- 金钱67770
- 威望20
- 积分69180
共 0 条评论