Как закешировать пагинацию в Laravel?

$key = request()->get('page', 1);

$posts = Cache::rememberForever("posts_$key", function() {
    return Post::with('categories')->with('tags')->orderByDesc('updated_at')->paginate(20);
});

Так мы кешируем навсегда. После обавления нового поста, кэш нужно удалять:

Создаем метод для удаления в контроллере:

public static function deleteCache() {
    $posts =  Cache::get('posts_1'); // количество страниц пагинации
    $lastPage = $posts->lastPage();
    for ($i = 1; $i <= $lastPage; $i++) {
        Cache::forget('posts_' . $i);
    }
}

И используем где нужно:

static::deleteCache();

 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x