Laravel:拥有 Laravel 分析的国家/地区

Laravel : Countries with Laravel Analytics

我正在使用 Laravel Analytics 获取我的应用程序访问者的数据。 在我的 Google Analytics 仪表板中,每个页面都有自己的访问次数、唯一身份访问者、访问者所在的国家/地区等。就像这张图片中的那样:

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

Route::get('/data', function () {
    $analyticsData = Analytics::fetchMostVisitedPages(Period::days(7));
    dd($analyticsData);
});
 

这条路线 returns :

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如何在返回的数组中添加其他信息,例如第一张图片中显示的国家或地理定位?

您正在使用 spatie/laravel-analytics 包。 正如您在此处看到的:spatie laravel analytics - Analytics.php 您仅调用的 fetchMostVisitedPages 方法 returns 该数据。

请查看 github 以了解有关此软件包的更多信息。

fetchMostVisitedPages 方法:

 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],
        ]);
    }

我从来没有使用过这个包,但是阅读文档,像这样就可以了。
package docs state you can use any query you want, and the Google Analytics docs 给出了一个按位置获取会话的示例。

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.
    ]);
}

请注意,这完全未经测试,您可能需要 fiddle 使用此处的一些数据。

假设我理解文档,这将获取所有国家(dimensions),它将使用会话(ga:sessions 来自第二个参数)来衡量国家数据。
然后它会进行排序并获得最大数量的结果。

您可以将指标更改为 ga:pageviews,但最终取决于您要使用的查询。
我已经链接了文档,所以你可以自己找到它们。