placeholder(__('Filter category')) ->options(Category::pluck('name', 'id')) ->filter( fn(Builder $q, string $value) => $q->whereHas( 'category', fn(Builder $q) => $q->where('id', $value) ) ); return parent::toolbar() ->addStartItem(Search::make()) ->addStartItem($categoryFilter) ->addEndItem(PageSize::make()) ->addEndItem(ColumnSelect::make()); } public function query(): Builder { return parent::query() ->with('category'); } protected function search(Builder $q, string $s): void { $q->search($s); } public function columns(): array { return [ Column::make('id', 'ID') ->sortable(fn(Builder $q, string $dir) => $q->orderBy('id', $dir)), Column::make('name', 'Name') ->sortable(fn(Builder $q, string $dir) => $q->orderBy('name', $dir)), Column::make('category_name', 'Category') ->slot(fn($r) => $r->category->name), Column::make('price', 'Price') ->sortable(fn(Builder $q, string $dir) => $q->orderBy('price', $dir)) ->slot(fn($r, $c) => "£{$r->{$c->name}}"), Column::make('stock', 'Stock') ->sortable(fn(Builder $q, string $dir) => $q->orderBy('stock', $dir)), ]; } }