如何在analytics.php中同时维护UA与GA4的报表配置?
同时维护UA与GA4报表配置的方案
1. 安装对应依赖包
Spatie针对UA和GA4分别提供了独立的包,需同时安装:
composer require spatie/laravel-analytics composer require spatie/laravel-analytics-v4
2. 合并配置到analytics.php
在原有的config/analytics.php中新增GA4专属配置节点,同时保留原有UA配置:
return [ // UA属性配置 'view_id' => env('ANALYTICS_VIEW_ID'), 'service_account_credentials_json' => storage_path('app/analytics/ua-service-credentials.json'), 'cache_lifetime_in_minutes' => 60, // GA4属性配置 'ga4' => [ 'property_id' => env('ANALYTICS_GA4_PROPERTY_ID'), 'service_account_credentials_json' => storage_path('app/analytics/ga4-service-credentials.json'), 'cache_lifetime_in_minutes' => 60, ], ];
3. 关联GA4包的配置
如果不想单独维护analytics-v4.php,可以修改该配置文件,让它直接读取主配置中的GA4节点:
// config/analytics-v4.php return [ 'property_id' => config('analytics.ga4.property_id'), 'service_account_credentials_json' => config('analytics.ga4.service_account_credentials_json'), 'cache_lifetime_in_minutes' => config('analytics.ga4.cache_lifetime_in_minutes'), ];
4. 分别调用UA与GA4报表
在业务代码中,根据需求初始化对应的客户端并执行查询:
UA报表查询(历史数据)
use Spatie\Analytics\Analytics; use Spatie\Analytics\Period; $uaAnalytics = app(Analytics::class); $uaReport = $uaAnalytics->performQuery( Period::days(7), 'ga:sessions', [ 'metrics' => 'ga:sessions', 'dimensions' => 'ga:date' ] );
GA4报表查询(当前数据)
use Spatie\AnalyticsV4\AnalyticsV4; $ga4Analytics = app(AnalyticsV4::class); $ga4Report = $ga4Analytics->runReport([ 'dateRanges' => [['startDate' => '7daysAgo', 'endDate' => 'today']], 'metrics' => [['name' => 'sessions']], 'dimensions' => [['name' => 'date']], ]);
注意事项
- 建议为UA和GA4分别准备独立的服务账户凭证JSON文件,避免权限混淆;若同一账户同时拥有两个属性的访问权限,也可共用一个文件。
- UA与GA4的查询语法、维度度量命名规则完全不同,需分别编写查询逻辑。
- UA属性已停止新数据收集,但历史数据仍可通过API查询,需保留配置直到不再需要历史报表。
内容的提问来源于stack exchange,提问作者aliya kazi
相关产品推荐
相关产品推荐

