用于休息api呼叫的Yii2数据提供者

时间:2015-11-19 12:19:48

标签: api rest pagination yii2 dataprovider

目前我正在使用yii2 array dataprovider列出来自rest api的数据。我们有超过1万条记录。每个休息api调用只能获得maximum 100 records,如果我们想要更多,我需要给这个休息api调用提供限制和偏移量。

yii2中是否有特定的rest api dataprovider?否则我如何为这个休息API实现分页?

1 个答案:

答案 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

如果能解决您的问题,请告诉我。