orderBy('id')->pluck('id')->first(); } public function table(Table $table): Table { $this->user = User::getUser(); self::load_filter($this->user->sport_id); return $table ->query(MultilineClient::query()->where('client_bookmaker_id', auth()->user()->bookmaker_id)->where('sport_id', $this->user->sport_id)) ->paginated(false) ->columns([ IconColumn::make('sport.icon') ->label('') ->width('1rem') ->icon(function ($record): string { return $record->sport->icon; }), TextColumn::make('sport.name'), TextColumn::make('multiline_setting.name')->label('Bettype'), BookmakerIcon::make('bookmaker.icon')->size('xl')->label('Icon'), SelectColumn::make('bookmaker_id') ->label('Bookmaker') ->width('2rem') ->options(function ($livewire, $record) { $table = MultilineSetting::where('id', $livewire->tableFilters['multiline_setting_id'])->value('table'); $bookies = DB::table($table) ->where('sport_id', $this->user->sport_id) ->groupBy('bookmaker_id')->pluck('bookmaker_id'); $res = Bookmaker::whereIn('id', $bookies)->pluck('name', 'id'); $arr = []; foreach ($res as $id => $name) { $arr[$id] = $name; } asort($arr); return $arr; }), ]) ->defaultSort('sort') ->deferFilters(false) ->filters([ Filter::make('multiline_setting_id') ->schema([ Radio::make('multiline_setting_id') ->inline() ->default(self::$default_filter) ->columnSpan(6) ->columnSpanFull() ->hiddenLabel() ->options(fn () => MultilineSetting::where('sport_id', $this->user->sport_id)->orderBy('name')->pluck('name', 'id')), ]) ->query(function (Builder $query, array $data): Builder { return $query ->when( $data['multiline_setting_id'], fn (Builder $query, $multiline_setting_id): Builder => $query->where('multiline_setting_id', $multiline_setting_id), ); }) ->columns(6)->columnSpan(6), ], layout: FiltersLayout::AboveContent) ->hiddenFilterIndicators(); } public function render(): View { return view('livewire.multiline-bookmaker'); } }