将心比心,方得人心~

yii2分页的使用

2024-02-26 10:34:26

控制器代码

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,
        ]);
    }

视图代码:

打赏

『微信打赏』

Tag标签分页 

我是有底线的