首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel :有的国家

Laravel :有的国家
EN

Stack Overflow用户
提问于 2021-05-14 12:16:04
回答 2查看 684关注 0票数 0

我使用Laravel分析获取应用程序访问者的数据。在我的Google分析仪表板上,每一页都有自己的访问量、独特的访问者、访问者的国家等。就像在这张图片里:

在我的web.php中,我正在创建一个测试包的路由:

代码语言:javascript
运行
复制
Route::get('/data', function () {
    $analyticsData = Analytics::fetchMostVisitedPages(Period::days(7));
    dd($analyticsData);
});

这条路线返回:

代码语言:javascript
运行
复制
Illuminate\Support\Collection {#1564 ▼
  #items: array:3 [▼
    0 => array:3 [▼
      "url" => "/new"
      "pageTitle" => "test"
      "pageViews" => 1534
    ]
    1 => array:3 [▼
      "url" => "/"
      "pageTitle" => "test"
      "pageViews" => 450
    ]
    2 => array:3 [▼
      "url" => "/customize/8"
      "pageTitle" => "test"
      "pageViews" => 196
    ]

如您所见,返回的数组只有urlpageTitlepageViews如何在返回的数组中添加其他信息,如第一张图像所示的国家或地理位置?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-14 12:40:18

我从来没有用过这个包,但是读一下文档,这样的东西就行了。

您可以使用任意查询的包装文档状态,谷歌分析文档给出了一个按位置获取会话的示例。

代码语言:javascript
运行
复制
public function myCustomMethod($maxResults = 20)
{
    $response = $this->performQuery(
        $period,
        'ga:sessions', // metrics
        [
            'dimensions' => 'ga:country',
            'sort' => '-ga:sessions',
            'max-results' => $maxResults,
        ],
    );

    return collect($response['rows'] ?? [])->map(fn (array $pageRow) => [
        // Do something with the rows that are returned.
        // I'm not sure how they're returned from the main response.
    ]);
}

注意,这是完全未经测试的,您可能需要在这里篡改一些数据。

假设我理解文档,这将得到所有国家(dimensions),它将使用会话(来自第二个参数的ga:sessions)来度量国家数据。

然后对结果进行排序并得到最大数量的结果。

您可以将度量标准更改为ga:pageviews,但最终取决于您要使用什么查询。

我已经把文件联系起来了,这样你就可以自己找出来了。

票数 1
EN

Stack Overflow用户

发布于 2021-05-14 12:21:54

您使用的是spatie/laravel-analytics包。正如您在这里看到的:空间laravel分析- Analytics.php --您正在调用的fetchMostVisitedPages方法--只返回该数据。

请在github中查看有关此包的更多信息。

fetchMostVisitedPages方法:

代码语言:javascript
运行
复制
 public function fetchMostVisitedPages(Period $period, int $maxResults = 20): Collection
    {
        $response = $this->performQuery(
            $period,
            'ga:pageviews',
            [
                'dimensions' => 'ga:pagePath,ga:pageTitle',
                'sort' => '-ga:pageviews',
                'max-results' => $maxResults,
            ],
        );

        return collect($response['rows'] ?? [])->map(fn (array $pageRow) => [
            'url' => $pageRow[0],
            'pageTitle' => $pageRow[1],
            'pageViews' => (int) $pageRow[2],
        ]);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67534215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档