Overriding paginateTableQuery doesn't work on Widgets

The TableWidet Class has a paginateTableQuery method where simplePagination is used. The docs say, this can be overwritten. But using the method in my Widget doesn't work. It still shows the simplePagination. With dd() I can verify that the method gets called though. Any ideas? Code:
use Filament\Widgets\TableWidget;
use Illuminate\Contracts\Pagination\CursorPaginator;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class CompanyProximitySearch extends TableWidget
{
public ?Model $record = null;

protected int|string|array $columnSpan = 'full';

protected function paginateTableQuery(Builder $query): CursorPaginator
{
return $query->cursorPaginate(($this->getTableRecordsPerPage() === 'all') ? $query->count() : $this->getTableRecordsPerPage());
}
}
use Filament\Widgets\TableWidget;
use Illuminate\Contracts\Pagination\CursorPaginator;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class CompanyProximitySearch extends TableWidget
{
public ?Model $record = null;

protected int|string|array $columnSpan = 'full';

protected function paginateTableQuery(Builder $query): CursorPaginator
{
return $query->cursorPaginate(($this->getTableRecordsPerPage() === 'all') ? $query->count() : $this->getTableRecordsPerPage());
}
}
Solution:
Yes I see, but in that case the paginateTableQuery is set to simple when extending the TableWidget. Changing it to extend "Widget" solves the issue. But I still don't know why the overwrite didn't work, as it normally should.
Jump to solution
4 Replies
LeandroFerreira
add this trait
use \Filament\Tables\Concerns\CanPaginateRecords;
use \Filament\Tables\Concerns\CanPaginateRecords;
Prodex
ProdexOP2d ago
Hm... I did that now, but it's still a simple Pagination in the Frontend.
use App\Filament\Resources\CompanyResource;
use App\Models\Company;
use Filament\Forms\Components\TextInput;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Concerns\CanPaginateRecords;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Filament\Widgets\TableWidget;
use Illuminate\Contracts\Pagination\CursorPaginator;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class CompanyProximitySearch extends TableWidget
{
use CanPaginateRecords;

public ?Model $record = null;

protected int|string|array $columnSpan = 'full';

protected function paginateTableQuery(Builder $query): CursorPaginator
{
return $query->cursorPaginate(($this->getTableRecordsPerPage() === 'all') ? $query->count() : $this->getTableRecordsPerPage());
}
use App\Filament\Resources\CompanyResource;
use App\Models\Company;
use Filament\Forms\Components\TextInput;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Concerns\CanPaginateRecords;
use Filament\Tables\Enums\FiltersLayout;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Filament\Widgets\TableWidget;
use Illuminate\Contracts\Pagination\CursorPaginator;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class CompanyProximitySearch extends TableWidget
{
use CanPaginateRecords;

public ?Model $record = null;

protected int|string|array $columnSpan = 'full';

protected function paginateTableQuery(Builder $query): CursorPaginator
{
return $query->cursorPaginate(($this->getTableRecordsPerPage() === 'all') ? $query->count() : $this->getTableRecordsPerPage());
}
LeandroFerreira
remove paginateTableQuery method. Simple pagination will also automatically adjust based on screen size, utilizing Tailwind's responsive breakpoints.
Solution
Prodex
Prodex2d ago
Yes I see, but in that case the paginateTableQuery is set to simple when extending the TableWidget. Changing it to extend "Widget" solves the issue. But I still don't know why the overwrite didn't work, as it normally should.
Want results from more Discord servers?
Add your server