FilamentF
Filament15mo ago
Jon

How do I filter count columns

I have a column to display member counts of a group.

TextColumn::make('active_members_count')
                          ->label('Members')
                          ->counts('activeMembers')
                          ->sortable()
                          ->grow(false)
                          ->wrapHeader()
                ,

I am attempting to allow a filter that affects this column, but I am not sure the proper way to reference it as it is a calculated value.


 Filter::make('active_members_count')
                      ->form([
                          Fieldset::make('Members')
                                  ->schema([
                                      TextInput::make('min')->numeric()
                                               ->label('Min Members'),
                                      TextInput::make('max')->numeric()
                                               ->label('Max Members'),
                                  ]),
                      ])
                      ->query(function (Builder $query, array $data): Builder {
                          return $query
                              ->when(
                                  $data['min'],
                                  fn(
                                      Builder $query,
                                      $members
                                  ): Builder => $query->having('active_members_count',
                                      '>=', $members)
                              )
                              ->when(
                                  $data['max'],
                                  fn(
                                      Builder $query,
                                      $members
                                  ): Builder => $query->having('active_members_count',
                                      '<=', $members)
                              );
                      }),


Thanks
Was this page helpful?