@Aslero

Как в Laravel вывести если пользователь онлайн?

если пользователь онлайн, то в кэш записываю его id

$expiresAt = Carbon::now()->addMinutes(5);
 Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);

как мне при поиске, если стоит чекбокс Онлайн в запросе проверить, находится ли пользователь онлайн, если да, то выводить только онлайн

$users = User::with('attributes');

if ($request->has('online') && $request->online == 1){

}
$users->where('id','!=', Auth::user()->id);

$users =  $users ->orderBy('date_top','desc')
                ->orderBy('date_premium','desc')
                ->orderBy('id','desc')
                ->get();

return response()->json($users);
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
никак естественно не получится, у вас же будет стопицот запросов на каждого пользователя и доставать надо каждый раз всю базу чтобы проверить онлайн ли юзер.

Надо просто добавить какой-нибудь last_activity_at и при каждом запросе юзера ставить туда текущую дату.

При выборе уже выбираете тех у кого last_activity_at > now()->subMinutes(5) например.

Это и будут онлайн пользователи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы