Просмотр файла app/Http/Controllers/OnlineController.php

Размер файла: 1.59Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers;
  6.  
  7. use App\Models\Online;
  8. use Illuminate\Database\Query\JoinClause;
  9. use Illuminate\View\View;
  10.  
  11. class OnlineController extends Controller
  12. {
  13. /**
  14. * Главная страница
  15. *
  16. * @return View
  17. */
  18. public function index(): View
  19. {
  20. $guests = false;
  21.  
  22. $online = Online::query()
  23. ->select('o1.*')
  24. ->from('online as o1')
  25. ->leftJoin('online as o2', static function (JoinClause $join) {
  26. $join->on('o1.user_id', 'o2.user_id')
  27. ->on('o1.updated_at', '<', 'o2.updated_at');
  28. })
  29. ->whereNull('o2.updated_at')
  30. ->whereNotNull('o1.user_id')
  31. ->with('user')
  32. ->orderByDesc('updated_at')
  33. ->paginate(setting('onlinelist'));
  34.  
  35. return view('pages/online', compact('online', 'guests'));
  36. }
  37.  
  38. /**
  39. * Список всех пользователей
  40. *
  41. * @return View
  42. */
  43. public function all(): View
  44. {
  45. $guests = true;
  46.  
  47. $online = Online::query()
  48. ->select('o1.*')
  49. ->from('online as o1')
  50. ->leftJoin('online as o2', static function (JoinClause $join) {
  51. $join->on('o1.user_id', 'o2.user_id')
  52. ->on('o1.updated_at', '<', 'o2.updated_at');
  53. })
  54. ->whereNull('o2.updated_at')
  55. ->with('user')
  56. ->orderByDesc('updated_at')
  57. ->paginate(setting('onlinelist'));
  58.  
  59. return view('pages/online', compact('online', 'guests'));
  60. }
  61. }