РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
860 of 1392 menu

Метод remember

Метод remember класса Cache позволяет получить значение из кеша по ключу. Если значение отсутствует, выполняется переданная замыкание-функция, результат которой сохраняется в кеш на указанное количество секунд, а затем возвращается. Первым параметром передаётся ключ, вторым - время жизни в секундах, третьим - замыкание, возвращающее данные для кеширования.

Синтаксис

<?php use Illuminate\Support\Facades\Cache; Cache::remember($key, $ttl, $callback); ?>

Пример

Давайте получим из кеша список статей. Если их нет в кеше, запросим из базы данных и сохраним на 10 минут:

<?php use Illuminate\Support\Facades\Cache; use App\Models\Article; $articles = Cache::remember('articles_list', 600, function () { return Article::all(); }); foreach ($articles as $article) { echo $article->title; } ?>

Результат выполнения кода:

"article 1" "article 2" "article 3"

Пример

Давайте получим из кеша количество пользователей. Если данных нет, вычислим их и сохраним на 5 минут:

<?php use Illuminate\Support\Facades\Cache; use App\Models\User; $count = Cache::remember('users_count', 300, function () { return User::count(); }); echo "Users count: " . $count; ?>

Результат выполнения кода:

"Users count: 42"

Пример

Давайте получим из кеша сложные данные - массив с категориями товаров. Если их нет, создадим и сохраним на 1 час:

<?php use Illuminate\Support\Facades\Cache; use App\Models\Category; $categories = Cache::remember('categories_tree', 3600, function () { return Category::with('products')->get(); }); foreach ($categories as $category) { echo $category->name . " (" . $category->products->count() . " products)"; } ?>

Результат выполнения кода:

"Electronics (15 products)" "Books (8 products)" "Clothing (23 products)"

Пример

Давайте используем метод в контроллере для кеширования результата тяжёлого запроса:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Cache; use App\Models\Order; class StatisticsController extends Controller { public function index() { $stats = Cache::remember('daily_stats', 86400, function () { return [ 'total_orders' => Order::count(), 'total_revenue' => Order::sum('total'), 'avg_order' => Order::avg('total') ]; }); return view('statistics', ['stats' => $stats]); } } ?>

Смотрите также

  • метод get,
    который получает значение из кеша
  • метод put,
    который сохраняет данные в кеш
  • метод rememberForever,
    который сохраняет данные в кеш бессрочно
  • метод forget,
    который удаляет данные из кеша
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить