input('page_size', 20))); $query = WechatUser::query()->orderByDesc('id'); if ($request->filled('keyword')) { $keyword = trim((string) $request->input('keyword')); $query->where(function ($q) use ($keyword) { $q->where('phone', 'like', "%{$keyword}%") ->orWhere('nickname', 'like', "%{$keyword}%") ->orWhere('real_name', 'like', "%{$keyword}%"); }); } $user = $request->user(); if (! $user->isSuperAdmin()) { $venueIds = $user->venues()->pluck('venues.id'); $query->whereExists(function ($sub) use ($venueIds) { $sub->selectRaw('1') ->from('reservations') ->whereColumn('reservations.wechat_user_id', 'wechat_users.id') ->whereIn('reservations.venue_id', $venueIds); }); } return response()->json($query->paginate($pageSize)); } }