Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel:拥有Laravel分析的国家_Laravel_Google Analytics - Fatal编程技术网

Laravel:拥有Laravel分析的国家

Laravel:拥有Laravel分析的国家,laravel,google-analytics,Laravel,Google Analytics,我正在使用来获取我的应用程序的访问者的数据。 在我的谷歌分析仪表板中,每个页面都有自己的访问次数、唯一访客、访客国家等。。如图所示: 在我的web.php中,我创建了一个测试包的路径: Route::get('/data', function () { $analyticsData = Analytics::fetchMostVisitedPages(Period::days(7)); dd($analyticsData); }); 此路线返回: Illuminate\S

我正在使用来获取我的应用程序的访问者的数据。 在我的谷歌分析仪表板中,每个页面都有自己的访问次数、唯一访客、访客国家等。。如图所示:

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

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

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
    ]

正如您所看到的,返回的数组只有
url
pageTitle
pageViews
如何在返回的数组中添加附加信息,如第一张图像中所示的国家或地理位置?

您正在使用Spatiale/laravel analytics软件包。 正如您在这里看到的:您正在调用的fetchMostVisitedPages方法只返回该数据

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

获取MOSTvisitedPages方法:

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

我从来没有使用过这个软件包,但是阅读文档,像这样的东西就可以了。
可以使用任何查询的状态,并给出按位置获取会话的示例

公共函数myCustomMethod($maxResults=20)
{
$response=$this->performQuery(
$period,
'ga:sessions',//度量
[
“维度”=>“ga:国家”,
'sort'=>'-ga:sessions',
“最大结果”=>$maxResults,
],
);
return collect($response['rows']??[])->map(fn(数组$pageRow)=>[
//对返回的行执行一些操作。
//我不确定他们是如何从主要回复中返回的。
]);
}
请注意,这是完全未经测试的,您可能需要在这里修改一些数据

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

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

我已经链接了文档,您可以自己找到它们。

我从未使用过此软件包,但它是在or中以这种方式设计的。它只应该返回那个数据。@JustCarty默认情况下,是的。它应该返回这些数据。但是我没办法把我的访客带到别的国家?我也用过,但那个软件包有点难。在文档中,它说你可以执行任何你想要的查询:加上相应的谷歌分析文档:@JustCarty你是对的!所以我认为像
dimensions=ga:country
这样的东西就可以了?所以我假设像
'Countries'=>(int)$pageRow[3],
?但我还是怀疑,因为它是默认集成在包中的。我刚刚发现了定制查询
dimensions=ga:country
。我猜是这样的。不要更改默认包。您可以重写该方法或遵循@JustCarty建议。我想你应该接受JustCarty的建议去做定制查询这就是我要做的。我设法输出了所有页面的国家/地区。我现在正试图为每一页获取它。谢谢。在供应商/Spatiale文件夹中,您将拥有另一个具有包名的文件夹。我直接对我的路线执行了此查询
$analyticsData=Analytics::performQuery(期间::年(1),'ga:sessions',['metrics'=>'ga:sessions,ga:pageviews','dimensions'=>'ga:country']);dd(分析数据)实际上我有所有页面的国家/地区。我正在尝试获取每个页面的国家/地区。要测试您的代码,我应该创建一个新的控制器还是修改现有的控制器?@AlyaKra从不修改包代码。当您
编写器更新时,它将被替换。相反,创建一个自定义类来扩展
$this
是什么。它不起作用。但我对事情的进展有一个很好的了解。我会努力让它发挥作用。非常感谢。@AlyaKra正如我所说,我从未使用过这个软件包,这只是你的一个起点。您只需更改
//公制部分和
尺寸部分。只要找到你想要的完美查询。请阅读谷歌的文档,一旦你明白了这一点,你就可以开始为你可能需要的其他查询创建更多的方法。