poll('15s') ->striped() ->defaultPaginationPageOption(8) ->paginationPageOptions([8, 16, 24, 36]) ->columns([ Stack::make([ ToggleColumn::make('is_active'), TextColumn::make('player_name') ->color('primary') ->icon('phosphor-copy') ->copyable() ->searchable(query: function (Builder $query, string $search): Builder { return $query->where(function (Builder $subQuery) use ($search) { // MongoDB-sichere Suche über 'name' ODER 'email' mittels Regex $subQuery->where('name', 'regexp', '/'.$search.'/i') ->orWhere('email', 'regexp', '/'.$search.'/i'); }); }), TextColumn::make('ss_player_id') ->color('success')->icon('phosphor-copy')->copyable() ->searchable( query: fn ($query, $search) => $query->orWhere('ss_player_id', (int) $search) ), TextColumn::make('positions.name')->badge()->color('warning') ->sortable(), TextColumn::make('team.ss_team_name')->prefix('Team: ')->color('teal'), TextColumn::make('team.country.name')->prefix('Country: ')->color('teal'), TextColumn::make('birthdate')->prefix('Birthdate: '), TextColumn::make('height')->prefix('Height: ')->suffix(' cm'), TextColumn::make('nationality')->prefix('Nationality: '), TextColumn::make('preferred_foot')->prefix('Preferred Foot: '), TextColumn::make('last_update')->date()->prefix('Last Update: '), ]), ]) ->searchQuery(function (Builder $query, string $search): Builder { return $query->where(function (Builder $subQuery) use ($search) { // Nutzen Sie 'regexp' als Operator und packen Sie Flags in den String /.../i $subQuery->where('name', 'regexp', '/'.$search.'/i') ->orWhere('email', 'regexp', '/'.$search.'/i'); }); }) ->emptyStateHeading('No double player in details') ->contentGrid([ 'md' => 2, 'xl' => 4, ]) ->filters([ Filter::make('player_filters') ->schema([ Checkbox::make('find_double'), ])->query(function (Builder $query, array $data): Builder { return $query->when( $data['find_double'], function (Builder $query) { $pDetails = StatistikoDetail::pluck('ss_player_id')->toArray(); $doublpDetails = array_diff_assoc( $pDetails, array_unique($pDetails) ); $query->whereIn('ss_player_id', $doublpDetails)->orderBy('ss_player_id'); } ); })->indicateUsing(function (array $data): ?string { if (! $data['find_double']) { return null; } return 'Find Double'; }), ], layout: FiltersLayout::AboveContent) ->deferFilters(false) ->recordActions([ EditAction::make()->iconButton(), DeleteAction::make()->iconButton(), ]); } }