Спасибо за ответ. Но я имел ввиду коллекции моделей. Это отже нормально? Сейчас пока кеш на файлах, но в продакшене будит редит, и не вызовет ли это лишние проблемы?
]]>а нормально ли это хранить коллекции в кеше?
да
]]>PHP$collection->where('foo', $foo)->first();
примерно так.
]]>я бы перекрыл в моделях метод all(). тогда код просто будет обращаться к Category::all() не беспокоясь о том как именно и откуда будут выбраны записи. а вот внутри all() уже сделать return cache()->rememberForever(…)
]]> // Cache categories
Cache::rememberForever('categories', function (){
return Category::with('children')->parent()->orderBy('parent_id', 'asc')->get(['id', 'name', 'parent_id'])->all();
});
// Cache attributes with values
Cache::rememberForever('attributes', function (){
return Attribute::with(['values' => function($q) {$q->orderBy('sort_order', 'asc');}])->orderBy('sort_order', 'asc')->get()->all();
});
// Cache languages
Cache::rememberForever('languages', function (){
return Language::orderBy('name', 'asc')->get()->all();
});
// Cache carriers
Cache::rememberForever('carriers', function (){
return Carrier::orderBy('name', 'asc')->get()->all();
});
// Cache currencies
Cache::rememberForever('currencies', function (){
return Currency::orderBy('name', 'asc')->get()->all();
});
// Cache features with values
Cache::rememberForever('features', function (){
return Feature::with(['values' => function($q) {$q->orderBy('sort_order', 'asc');}])->orderBy('sort_order', 'asc')->get()->all();
});
// Cache tax
Cache::rememberForever('taxes', function (){
return Tax::orderBy('name', 'asc')->get()->all();
});
...
Правильно ли это? просто почему я решил сделать именно так: потому что когда добавляется новая категория / поставщик и тд, то я после сохранения в базу, очищаю весь кеш с вязанный с добавленным только что ресурсом, и ларавел потом автоматом перекеширывает его. правильно ли это?
]]>