You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spatie Laravel Analytics中如何使用多个dimensionFilter?

在Spatie Laravel Analytics中使用多维度过滤器的正确方式

你当前代码的问题是在FilterExpression的构造数组里重复使用了filter键——PHP数组中重复的键会被后面的值覆盖,所以只有最后一个eventName的过滤器生效。

要实现多维度过滤,需要通过**逻辑组(AND/OR)**来组合多个过滤器,具体步骤如下:

  1. 分别创建每个维度的Filter实例
  2. 使用and_group(或or_group,根据业务需求选择逻辑关系)将多个过滤器包裹起来,传入FilterExpression

以下是修正后的完整代码:

$data = Analytics::get(
    period: Period::create($startDate, $endDate),
    metrics: ['eventCount'],
    dimensions: ['pagePath','eventName','day','month','linkText','linkClasses','linkUrl'],
    maxResults: 1000,
    dimensionFilter: new FilterExpression([
        'and_group' => [
            'expressions' => [
                new FilterExpression([
                    'filter' => new Filter([
                        'field_name' => 'pagePath',
                        'string_filter' => new StringFilter([
                            'match_type' => MatchType::EXACT,
                            'value' => '/example/abc',
                        ]),
                    ]),
                ]),
                new FilterExpression([
                    'filter' => new Filter([
                        'field_name' => 'eventName',
                        'string_filter' => new StringFilter([
                            'match_type' => MatchType::EXACT,
                            'value' => 'click',
                        ]),
                    ]),
                ]),
            ],
        ],
    ]),
    keepEmptyRows:true
);

补充说明

  • 如果需要或逻辑(满足任一条件即可),只需将and_group替换为or_group
  • 每个子过滤器都需要包裹在FilterExpression实例中,再放入expressions数组内

内容的提问来源于stack exchange,提问作者Pecel Ponorogo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:40:00