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

如何判断Laravel Filament表过滤器是否活跃并修改Eloquent查询?

在Filament Resource中判断是否存在活跃表过滤器

要实现根据活跃过滤器状态修改数据表查询的需求,你可以通过以下两种可靠方式判断活跃过滤器:

方法1:利用Table实例获取已应用过滤器

在modifyQueryUsing的闭包中注入Filament\Tables\Table实例,调用其getAppliedFilters()方法获取所有激活的过滤器,通过判断返回数组是否为空来确认是否有活跃过滤器:

->modifyQueryUsing(function (Builder $query, \Filament\Tables\Table $table) {
    $hasActiveFilters = !empty($table->getAppliedFilters());

    if ($hasActiveFilters) {
        return $query->with('studentAcademics');
    } else {
        return $query->whereNull('id');
    }
})

方法2:通过请求对象读取过滤器参数

Filament会将过滤器参数以filters为键存入请求的查询参数中,直接读取该参数并判断是否非空即可:

->modifyQueryUsing(function (Builder $query, \Illuminate\Http\Request $request) {
    $hasActiveFilters = !empty($request->query('filters'));

    if ($hasActiveFilters) {
        return $query->with('studentAcademics');
    } else {
        return $query->whereNull('id');
    }
})

注意事项

  • getAppliedFilters()返回的数组包含所有已激活过滤器的配置与值,空数组代表无活跃过滤器。
  • 若你使用了自定义命名的过滤器参数,方法2需要根据实际参数名调整filters键值。

内容的提问来源于stack exchange,提问作者Frederick Osei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:08:10