Size: a a a

Laravel для начинающих

2020 June 02

K

KOSUMOV | ALI in Laravel для начинающих
Спасибо!
источник

AH

Andrey Helldar in Laravel для начинающих
KOSUMOV | ALI
Спасибо!
U're welcome!

Проверь, в сумме должно быть 5 уникальных запросов и всё, ничего лишнего.
источник

K

KOSUMOV | ALI in Laravel для начинающих
 public function show(Category $category, Post $post)
   {
       

       $article = $category
           ->posts()
           ->where('id', '!=', $post->id)
           ->latest()
           ->take(5)
           ->get()
           ->map(function (Post $post) use ($category) {
               return $post->setRelation('category', $category);
           });

       $lastposts = Post::with('category')
           ->where('id', '!=', $post->id)
           ->latest()
           ->take(6)
           ->get(['id', 'title', 'created_at', 'counter', 'category_id']);

       $post->increment('counter');

       return view('post.view', compact('post', 'article', 'lastposts'));

   }
источник

K

KOSUMOV | ALI in Laravel для начинающих
Вот я добавил еще запрос для получения текущей записи  -итого 8 запросов
источник

AH

Andrey Helldar in Laravel для начинающих
KOSUMOV | ALI
 public function show(Category $category, Post $post)
   {
       

       $article = $category
           ->posts()
           ->where('id', '!=', $post->id)
           ->latest()
           ->take(5)
           ->get()
           ->map(function (Post $post) use ($category) {
               return $post->setRelation('category', $category);
           });

       $lastposts = Post::with('category')
           ->where('id', '!=', $post->id)
           ->latest()
           ->take(6)
           ->get(['id', 'title', 'created_at', 'counter', 'category_id']);

       $post->increment('counter');

       return view('post.view', compact('post', 'article', 'lastposts'));

   }
Смотри, у тебя в параметрах функции есть Post $post - это биндинг из Лары, а прямо под ним ты ещё раз запрашиваешь тот же самый пост...
Это +1 запрос. Так как там нет релейшена на категорию, то это еще +1 запрос.
Инкремент - тоже +1 запрос.

Вот и получается, что в сумме 8 запросов.
источник

AH

Andrey Helldar in Laravel для начинающих
Если нужна проверка по статусу, то код должен выглядеть так:

public function show(Category $category, Post $post)
{
   abort_if($post->status === 1, 404);

   $article = $category
       ->posts()
       ->where('id', '!=', $post->id)
       ->latest()
       ->take(5)
       ->get()
       ->map(function (Post $post) use ($category) {
           return $post->setRelation('category', $category);
       });

   $lastposts = Post::with('category')
       ->where('id', '!=', $post->id)
       ->latest()
       ->take(6)
       ->get(['id', 'title', 'created_at', 'counter', 'category_id']);

   $post->increment('counter');

   return view('post.view', compact('post', 'article', 'lastposts'));
}
источник

K

KOSUMOV | ALI in Laravel для начинающих
KOSUMOV | ALI
 public function show(Category $category, Post $post)
   {
       

       $article = $category
           ->posts()
           ->where('id', '!=', $post->id)
           ->latest()
           ->take(5)
           ->get()
           ->map(function (Post $post) use ($category) {
               return $post->setRelation('category', $category);
           });

       $lastposts = Post::with('category')
           ->where('id', '!=', $post->id)
           ->latest()
           ->take(6)
           ->get(['id', 'title', 'created_at', 'counter', 'category_id']);

       $post->increment('counter');

       return view('post.view', compact('post', 'article', 'lastposts'));

   }
Исправил и убрал post и 7
источник

K

KOSUMOV | ALI in Laravel для начинающих
abort_if($post->status === 0, 404); единственное тут 0
источник

K

KOSUMOV | ALI in Laravel для начинающих
Отлично, спасибо!
источник

AH

Andrey Helldar in Laravel для начинающих
👍
источник

ЕК

Егор Карась... in Laravel для начинающих
=== 0, за що
источник

AH

Andrey Helldar in Laravel для начинающих
KOSUMOV | ALI
abort_if($post->status === 0, 404); единственное тут 0
Можно улучшить до:
abort_unless($post->status, 404);
источник

Д

Діма in Laravel для начинающих
Привет.
Подскажите, могу ли я сделать сообщение в
session::put('success', "It works')
если эта команда находится в методе, который вызывается череез $.ajax()
?
Я сделал js форму, после отправки формы перезагружаю страницу, а сообщения из сессии нет..
источник

AH

Andrey Helldar in Laravel для начинающих
KOSUMOV | ALI
abort_if($post->status === 0, 404); единственное тут 0
Статус может быть строго "0" или "1"?
источник

K

KOSUMOV | ALI in Laravel для начинающих
Andrey Helldar
Статус может быть строго "0" или "1"?
да
источник

AH

Andrey Helldar in Laravel для начинающих
Ок, тогда метод замени на https://t.me/laravel_web/253901
источник

K

KOSUMOV | ALI in Laravel для начинающих
0 не опубликовано и 1 опубликовано
источник

AH

Andrey Helldar in Laravel для начинающих
KOSUMOV | ALI
0 не опубликовано и 1 опубликовано
404-й код ответа тоже можешь заменить на тот, который нужен.

Например,
404 - страница не найдена
403 - доступ запрещён
401 - не авторизован
И т.д. по семантике.
источник

AH

Andrey Helldar in Laravel для начинающих
Егор Карась
=== 0, за що
За Ларавел 😀
источник

K

KOSUMOV | ALI in Laravel для начинающих
Andrey Helldar
404-й код ответа тоже можешь заменить на тот, который нужен.

Например,
404 - страница не найдена
403 - доступ запрещён
401 - не авторизован
И т.д. по семантике.
Да, тут мне 403 нужен
источник