За последние 24 часа нас посетили 20602 программиста и 1107 роботов. Сейчас ищут 407 программистов ...

ошибка сервера 500 вместо 404

Тема в разделе "Laravel", создана пользователем Qvei, 11 июн 2020.

  1. Qvei

    Qvei Новичок

    С нами с:
    10 ноя 2019
    Сообщения:
    60
    Симпатии:
    4
    Подскажите пожалуйста, еще до недавна все работало нормально и если ввести несуществующий адрес то редиректило на имеющуюся 404 blade страницу. Собственно сейчас тоже редиректит но только с домена.. тоесть если ввести mysite/несуществуюшийадрес то сервер отдаст 404 blade как положено, но если ввести несуществующий адрес статьи.. например: mysite/posts/несуществуюшийадрес то сервер отдает 500 ошибку.
    В логах laravel такая ошибка контроллера: "Call to a member function increment() on null"
    Контроллер
    Код (Text):
    1. public function show($slug) {
    2.         $novinis = App\Novini::where('slug', $slug)->first();
    3.         $novinis->increment('view');
    4.         $novinisss = App\Novini::where('slug', '!=', $slug)->latest('date')->get();
    5.         $novinis->comment_count;
    6.         Cookie::queue('cookiesfromhell','value',3600);
    7.         return view('novinis.show', compact('novinis', 'novinisss'));
    8.     }
    Точно не знаю но возможно перестало работать когда я поменял Route, из нескольких (post, get..) на один Route::resource.
    Все работает, ошибок небыло никаких пока не удалил проиндексированую статью и search console не выдал ошибку server 500.
    Подскажите почему ошибка? ведь я удалил id да и все поле, при чем там increment()?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    firstOrFail надо вызывать, а не просто first.
     
    Qvei нравится это.
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    404 - выдает ваше приложение, отслеживая что страницы нет
    500 выдает сервер при наличии ошибки в коде - которую вы и озвучили, используйте как предудущий автор сказал firstOrFail для отлавливаания ситуации с пустым результатом, либо условием типа
    PHP:
    1. if ($novinis = App\Novini::where('slug', $slug)->first()) {
    2.         $novinis->increment('view');
    3.         ......
    4. }
     
    Qvei нравится это.