目前我正在使用yii2 array dataprovider
列出来自rest api的数据。我们有超过1万条记录。每个休息api调用只能获得maximum 100 records
,如果我们想要更多,我需要给这个休息api调用提供限制和偏移量。
yii2中是否有特定的rest api dataprovider?否则我如何为这个休息API实现分页?
答案 0 :(得分:1)
dataprovider
中的{p> Yii2
支持分页。假设您的服务使用以下代码接收它的参数:
$params = Yii::$app->getRequest()->post();
您可以在请求中包含page
参数,然后执行一些hack(:P),例如:
if (isset($params ['page'])) {
$_GET['page'] = (int) $params ['page'];
if ($_GET['page'] < 1) {
$_GET['page'] = 1;
}
}
完成此操作后,dataprovider
会自动将$_GET
的值分配给其结果集。数据提供者的一个例子:
$dataProvider = new ActiveDataProvider([
'query' => Users::find(),
'pagination' => array('pageSize' => 10),
]);
或者,在您的情况下:
$dataProvider = new ArrayDataProvider([
'allModels' => $query->from('post')->all(),
'sort' => [
'attributes' => ['id', 'username', 'email'],
],
'pagination' => [
'pageSize' => 10,
],
]);
要获取模型,您可以使用getModels()
的{{1}}方法,如下所示:
dataprovider
如果能解决您的问题,请告诉我。