query('keyword', '')); $q = AdminUser::query() ->with(['roles']) ->orderByDesc('id'); if ($keyword !== '') { $q->where(function ($sub) use ($keyword): void { $sub->where('username', 'like', '%'.$keyword.'%') ->orWhere('name', 'like', '%'.$keyword.'%') ->orWhere('email', 'like', '%'.$keyword.'%'); }); } $paginator = $q->paginate($p['perPage'], ['*'], 'page', $p['page']); return AdminApiList::json($paginator, fn (AdminUser $user): array => AdminUserApiPresenter::listItem($user)); } }