看下图代码,使用ActiveDataProvider返回的数据竟是20条数据,而不是3条,而用
$modelClass::find()->limit(3)->orderBy(['id' => SORT_DESC])->all()
返回3条数据。
谢谢各位解答,找到原因,并解决了
看了Pagination.php的源码才知道,如果不设置pagination,就设置默认的,设置了pageSize会影响sql语句的limit。
https://github.com/yiisoft/yii2/blob/master/framework/data/Pagination.php
ActiveDataProvider::query 只是一个 ActiveQuery, limit 会被覆盖的。
如果是给定的数据应该用
ArrayDataProvider
;如果是分页大小应该设置
ActiveDataProvider::pagination::pageSize
。