前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yii2 中 ActiveDataProvider 如何使用分页 limit 限制条数

Yii2 中 ActiveDataProvider 如何使用分页 limit 限制条数

作者头像
hedeqiang
发布2019-12-17 21:46:54
1.9K0
发布2019-12-17 21:46:54
举报
文章被收录于专栏:LaravelCodeLaravelCode

应用场景,我们某个数据表只想返回 200 条数据?我们该怎样做呢? 我们可能会想到使用 limit 来进行限制,接下来就一起尝试下,看看效果如何

如果我们使用 GII 生成 CRUD ,那么我们应该会有一个 search 类,他可能类似于如下:

代码语言:javascript
复制
public function search($params)
{
    $query = Post::find();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
    $this->load($params);

    if (!$this->validate()) {
        return $dataProvider;
    }
    // grid filtering conditions
    $query->andFilterWhere([
        'id' => $this->id,
        'title' => $this->title,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ]);

    return $dataProvider;
}

然后我们使用 limit 进行限制条数:

代码语言:javascript
复制
public function search($params)
{
    $query = Post::find()->limit(10);
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
    .
    .
    .
    return $dataProvider;
}

然后运行程序,发现并没有生效、并不起作用 然后我在这里找到了答案 https://stackoverflow.com/questions/33748211/limit-is-not-working-in-activedataprovider

解决方法:

你可以将 'pagination' 设置为 false

代码语言:javascript
复制
$query = Post::find()->limit(10);
$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'pagination' => false,
]);

然后使用 limit 方可生效,以上方式 条数是限制了,但是分页没了,所以如果还想保留分页采用如下方式:

代码语言:javascript
复制
$dataProvider = new ActiveDataProvider([
        'query' => $query,
         'pagination' => [
             'pageSize' => 30, 
         ],
    ]);
$dataProvider->setTotalCount(200);

以上就是 Yii2ActiveDataProvider 如何使用分页 limit 限制条数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档