控制器代码
public function actionIndex()
{
$name = YII::$app->request->get('name', '');
$status = YII::$app->request->get('status', '');
// 拼接查询条件方案1
$where = '1=1 ';
$param = [];
// 如果查询条件很多,可以按这种方式,拼where条件
if (!empty($name)) {
$where .= "AND name=:name";
$param = array_merge($param, [':name' => $name]);
}
if (!empty($status)) {
$where .= " AND status=:status";
$param = array_merge($param, [':status' => $status]);
}
$query = Book::find()->where($where, $param);
// 拼接查询条件方案2
// $map = [];
// if (!empty($name)) {
// $map = array_merge($map, ['name' => $name]);
// }
//
// if (!empty($status)) {
// $map = array_merge($map, ['status' => $status]);
// }
//
// $query = Book::find()->where($map);
// 设置分页大小,为了演示,我写成了2
$pageSize = 2;
// 得到文章的总数(但是还没有从数据库取数据)
$count = $query->count();
// 创建分页组件
$page = new Pagination([
// 总的记录条数
'totalCount' => $count,
// 分页大小
'pageSize' => $pageSize,
// 设置地址栏当前页数参数名
'pageParam' => 'page',
// 设置地址栏分页大小参数名
'pageSizeParam' => 'pageSize',
]);
// 获取数据
$data = $query->orderBy('id DESC')
->offset($page->offset)
->limit($page->limit)
->asArray()
->all();
return $this->renderPartial('page', [
'data' => $data,
'page' => $page,
]);
}视图代码:
