public function getAllByTag($id) { return Cache::store('prevTag')->rememberForever($id . ':' . $this->page, function () use($id) { $tags = new Tags(); $tag = $tags->getById($id)->first(); //Да, да для статей алгоритм обсалютно такой-же //Но я действую так, если код дублируется больше 2храз (Но только в рамках одного класса/ф-и php файла)то: //создаем шаблон для повторяющихся действий, выносим всё в ф-и и т.п. //Для хлебных крошек $items['tag'] = ['id' => $tag->id, 'name' => $tag->name, 'curl' => $tag->curl]; //методанные $items['title'] = $tag->name; $items['keywords'] = 'блог, разработка, тег, ' . $tag->name; if ($tag->meta_keywords != '') { //Доп ключевые слова $items['keywords'] .= ',' . $tag; } $items['description'] = 'Блог начинающего backend разработчика' . 'Все статьи отобранные по тегу ' . $tag->name . '.' . $tag->meta_descriptiom; //Превьюхи $articles = $tag->articles()->published()->orderByParam()->with('tags', 'category')->paginate($this->countPage); //Превьюхи в нужном формате $items['articles'] = $this->createArrPreviews($articles); return $this->createLengthAwarePaginator($articles, $items); }); }