@kokoshneta here is full code after update
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('name')
->sortable()
->searchable()
->toggleable(),
Tables\Columns\TextColumn::make('email')
->sortable()
->searchable()
->toggleable(),
Tables\Columns\TextColumn::make('hospital.name')
->sortable()
->toggleable()
->searchable(),
Tables\Columns\TextColumn::make('contact_number')
->sortable()
->toggleable()
->toggledHiddenByDefault()
->searchable(),
Tables\Columns\TextColumn::make('alliedHealthProfessional.designation')
->label('Designation')
->enum(FilamentFormHelper::getDesignations())
->sortable()
->toggleable()
->searchable(),
Tables\Columns\TextColumn::make('surgeries_count')
->label('Entries')
->counts('surgeries')
->sortable()
->toggleable()
])
->filters([
Filter::make('is_allied_health_professional')
->label(__('Is Allied Health Professional'))
->toggle()
->query(fn(Builder $query): Builder => $query
->whereNotNull('allied_health_professional_id')),
SelectFilter::make('designation')
->label('AHP Designation')
->multiple()
->options(FilamentFormHelper::getDesignations())
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['values'],
fn(Builder $query, $date): Builder => $query->whereHas(
'alliedHealthProfessional',
fn(Builder $query) => $query->whereIn('designation', $data['values'])
),
);
}),
Filter::make('created_at')
->form([
Forms\Components\DatePicker::make('created_from'),
Forms\Components\DatePicker::make('created_until'),
])
->query(function (Builder $query, array $data): Builder {
return $query->withCount([
'surgeries as surgeries_count' => function (Builder $builder) use ($data) {
if ($from = $data['created_from'])
$builder->where('surgeries.date', '>=', $from);
if ($until = $data['created_until'])
$builder->where('surgeries.date', '<=', $until);
return $builder;
}
]);
})
])
->actions([
Tables\Actions\ActionGroup::make([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
Tables\Actions\ForceDeleteAction::make(),
Tables\Actions\RestoreAction::make(),
]),
])
->bulkActions([
Tables\Actions\DeleteBulkAction::make(),
Tables\Actions\ForceDeleteBulkAction::make(),
Tables\Actions\RestoreBulkAction::make(),
ExportBulkAction::make()->exports([
ExcelExport::make('table')
->fromTable()
->askForFilename()
->askForWriterType(),
ExcelExport::make('form')->fromForm()
->askForFilename()
->askForWriterType(),
]),
]);
}