【问题标题】:Yii2 Pagination is not working with orderByYii2 分页不适用于 orderBy
【发布时间】:2019-05-29 22:42:46
【问题描述】:

我正在尝试通过 orderBy 使用 Yii2 分页,但它无法正常工作。

这是我的代码:

$query = Blog::find()->where(['status' => 1])->orderBy('blog_id DESC');
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count()]);
$pages->pageSize = 12;
$pages->page = $_GET['page'];
$results = array();
$models = $query->offset($pages->offset)
          ->limit($pages->limit)
        //->orderBy('blog_id DESC')
          ->all();

我尝试了几种情况,但仍然得到错误的结果。

注意:分页在没有 orderBy 的情况下工作正常,但我需要它首先显示最新项目。

【问题讨论】:

  • 您能告诉我们您期望的结果和实际得到的结果吗?
  • @GarryWelding 缺少新商品,订单也不正确
  • 好的,你说你期待最新的,但在你上面的查询中,我只能看到你在 blog_id 上订购,而不是任何类型的日期字段......
  • 我尝试使用日期/时间字段进行订购,但我遇到了同样的问题,因此我尝试使用 id 字段作为另一种解决方案。就是这样
  • $query 有所有元素吗?

标签: php mysql pagination yii2


【解决方案1】:

试试这个

    $dataProvider = new ActiveDataProvider([
        'query' => Users::find()->andWhere('UserId > :uid',[':uid' => 1])->orderBy('UserId DESC'),
        'pagination' => array('pageSize' => 5),
    ]);

    return $this->render('index', [
        'dataProvider' => $dataProvider,
    ]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多