如何使用结果的`nextLink`属性?

时间:2015-11-03 22:32:49

标签: google-api-php-client

查询结果对象返回nextLink,将结果的下一页的URL设置为字符串或null,具体取决于当前页面之后是否有另一页。文档对此非常清楚,但是关于如何获取该链接并为下一页提出另一个请求,其中没有任何内容。

我一直在挖掘源代码,并且发现它似乎没有任何方法可以将这个值用作布尔告诉我更多的布尔值之外的其他任何东西。要留下这样一个明显松散的结局,即使是在测试版API中,也听起来不像谷歌,所以我必须以某种方式遗漏某些东西。

我的代码设置方式,我不能只重用生成初始请求的请求数据。我有单独的逻辑来生成初始请求并将结果集解析为可用的形式。那,并且知道链接被暴露,好像它意味着被使用暗示有一种比修改初始请求更简洁的方式。只是,我该怎么做?

1 个答案:

答案 0 :(得分:0)

我有一些似乎有用的东西。重要的一点是在底部,我在这里nextLink并使用这些部分进行新的查询。这不是理想的,但它比尝试手动cURL更好,因为在线其他一切似乎都暗示着。当然,Google_Service_Analytics_GaData会因使用哪种服务而有所不同。

do {
    $rows = $results->getRows();

    foreach ($rows as $row) {
        $record = array();

        foreach ($row as $i => $field) {
            $name = $headers[$i]->name;

            switch($headers[$i]->dataType) {
                case 'FLOAT':
                    $record[$name] = (float) $field;
                    break;
                case 'INTEGER':
                    $record[$name] = (int) $field;
                    break;
                default:
                    $record[$name] = (string) $field;
            }
        }

        $records[] = $record;
    };

    $nextLink = $results->getNextLink();

    if ($nextLink) {
        /* The GA API doesn't have anything to actually USE The link
         * they so helpfully supply, so we have to disassemble it and
         * make a new query off of it. Internally, 
         * $this->gaService->data_ga calls $this->gaService->call.
         * These are on `Google_Service_Analytics_DataGa_Resource` and
         * `Google_Service_Resource`, respectively.
         */
        $options = [];
        parse_str(substr($nextLink, strpos($nextLink, '?') + 1), $options);

        $results = $this->gaService->data_ga->call('get', [$options], "Google_Service_Analytics_GaData");
    }
} while ($nextLink);