FilamentF
Filament3y ago
Vp

filter by relationship created at

How can I filter by relationship created_at column?
My approach, which is not working
public function table(Table $table): Table
{
    return $table
        ->query(Post::query()->with('tags'))
        ->columns([
            TextColumn::make('title'),
            TextColumn::make('tags.created_at')->date(),
            TextColumn::make('created_at'),
        ])
        ->filters([
            Filter::make('search')
                ->form([
                    DatePicker::make('tagDate')
                        ->label('Tag Created'),
                ])
                ->query(function (Builder $query, array $data): Builder {
                    return $query
                        ->when(
                            $data['tagDate'],
                            fn (Builder $query, $date): Builder => $query->with([
                                'tags', fn ($q, $date) => $q->whereDate('created_at', $date),
                            ]),
                        );
                }),
        ], layout: FiltersLayout::AboveContent);
}
Solution
Oh, I can use whereHas()..
Was this page helpful?