F
Filament5mo ago
o.m

How to add custom sort query?

TextColumn::make('groups.status')
->label('Status')
->sortable()
->formatStateUsing(function ($state, $record) {
$groupUser = $record->groups->where('id', group()->id)->first()?->pivot;
return $groupUser ? ucfirst($groupUser->status) : 'Inactive';
})
->extraAttributes(['style' => 'font-weight: bold'])
->color(function ($state, $record) {
$groupUserStatus = $record->groups->where('id', group()->id)->first()?->pivot?->status ?? 'inactive';
return $groupUserStatus === 'active' ? 'success' : 'secondary';
})
TextColumn::make('groups.status')
->label('Status')
->sortable()
->formatStateUsing(function ($state, $record) {
$groupUser = $record->groups->where('id', group()->id)->first()?->pivot;
return $groupUser ? ucfirst($groupUser->status) : 'Inactive';
})
->extraAttributes(['style' => 'font-weight: bold'])
->color(function ($state, $record) {
$groupUserStatus = $record->groups->where('id', group()->id)->first()?->pivot?->status ?? 'inactive';
return $groupUserStatus === 'active' ? 'success' : 'secondary';
})
How do I add custom sort for sortable() adding function ($query, $direction) causes An attempt was made to evaluate a closure for [Filament\Tables\Columns\TextColumn], but [$query] was unresolvable. Just want to sort status based on asc or decending
1 Reply
o.m
o.mOP5mo ago
Was able to solve it by adding true on the sortable function
->sortable(true, function ($query, $direction) {
return $query
->leftJoin('group_users as gu', function ($join) {
$join->on('users.id', '=', 'gu.user_id')
->where('gu.group_id', '=', group()->id);
})
->orderBy('gu.status', $direction); // Sorting based on alias 'gu'
})
->sortable(true, function ($query, $direction) {
return $query
->leftJoin('group_users as gu', function ($join) {
$join->on('users.id', '=', 'gu.user_id')
->where('gu.group_id', '=', group()->id);
})
->orderBy('gu.status', $direction); // Sorting based on alias 'gu'
})

Did you find this page helpful?