query('keyword', '')); $status = $request->query('status'); $q = Player::query() ->with(['wallets' => static fn ($wq) => $wq->orderBy('wallet_type')->orderBy('currency_code')]) ->orderByDesc('id'); if ($keyword !== '') { $term = '%'.addcslashes($keyword, '%_\\').'%'; $q->where(static function ($sub) use ($term): void { $sub->where('site_player_id', 'like', $term) ->orWhere('username', 'like', $term) ->orWhere('nickname', 'like', $term); }); } if ($status !== null && $status !== '') { $q->where('status', (int) $status); } $paginator = $q->paginate($p['perPage'], ['*'], 'page', $p['page']); return AdminApiList::json($paginator, fn (Player $player): array => PlayerApiPresenter::listItem($player)); } }