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正如我所说,我从未使用过这个软件包,这只是你的一个起点。您只需更改//公制部分和尺寸部分。只要找到你想要的完美查询。请阅读谷歌的文档,一旦你明白了这一点,你就可以开始为你可能需要的其他查询创建更多的方法。