Задать вопрос

Как оптимизировать вывод всех элементов на странице?

Здравствуйте! Как можно оптимизировать вывод всех элементов на странице? Допустим, их больше 10.000, тогда страница загружается более 2-3 секунд.
$cat = Category::with('translations.team')->where('slug', '=', $slug)->firstOrFail();
            $translation = $cat->translations;
            $translations = CollectionHelper::paginate($translation, $translation->count(), 15);
            
            return view('translation.index', compact('cat'))->with([
                'category' => $cat,
                'translations' => $translations,
            ]);
  • Вопрос задан
  • 186 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
@jazzus
$category = Category::whereSlug($slug)
                    ->firstOrFail();
                    
$translations = $category->translations()
                         ->with('team')
                         ->paginate(15);
                         
return view('translation.index', compact('category', 'translations'));
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Kulaxyz
@Kulaxyz
Могу лучше
В 6 версии добавили Lazy Collections.
Ответ написан
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
Зачем вы достаете все данные если потом делаете paginate и выводите только 15 записей?
Почему бы не достать из базы только эти 15 записей?

И почему бы не сделать это не через with(), а обычный запросом к нужной модели, а потом у нее уже проверять что там есть категория с нужным slug.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы