【问题标题】:Yii2 data provider for rest api call [closed]用于rest api调用的Yii2数据提供者[关闭]
【发布时间】:2015-11-19 12:19:47
【问题描述】:

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

yii2中有没有特定的rest api dataprovider?否则我该如何为这个 REST API 实现分页?

【问题讨论】:

  • 您可以使用ActiveDataProviderSqlDataProvider ...
  • 如何在 ActiveDataProvier 查询参数中传递其余的 api 调用。请有任何示例

标签: api rest pagination yii2 dataprovider


【解决方案1】:

dataprovider,在Yii2 中支持分页。假设,您的服务使用以下代码接收它的参数:

$params = Yii::$app->getRequest()->post();

您可以在请求中包含 page 参数,然后做一些小技巧 (: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,
    ],
        ]);

要获取模型,您可以使用dataprovidergetModels() 方法,如下所示:

$models = $dataProvider->getModels();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多