Tables\Columns\TextColumn::make('last_time_listened')
->getStateUsing(function (Song $record): ?Carbon {
$pivot = UserSongPlayHistory::query()
->latest()
->where('user_id', auth()->id())
->where('song_id', $record->id)
->where('is_listened', true)
->first();
return $pivot?->played_at;
})
->sortable(query: function (Builder $query, string $direction, $column): Builder {
return $query
->join('user_song_play_history', 'user_song_play_history.song_id', '=', 'songs.id')
->orderBy('user_song_play_history.played_at');
})
Tables\Columns\TextColumn::make('last_time_listened')
->getStateUsing(function (Song $record): ?Carbon {
$pivot = UserSongPlayHistory::query()
->latest()
->where('user_id', auth()->id())
->where('song_id', $record->id)
->where('is_listened', true)
->first();
return $pivot?->played_at;
})
->sortable(query: function (Builder $query, string $direction, $column): Builder {
return $query
->join('user_song_play_history', 'user_song_play_history.song_id', '=', 'songs.id')
->orderBy('user_song_play_history.played_at');
})