Q:

Как организовать структуру очистки кэша по ключу в Laravel 5?

При выводе товаров, данные кэшируются.
Как сбросить кэш по ключу при сохранении или удалении данных в нескольких связанных моделях (товар, категория, и т.д.)?
Не хотелось бы дублировать код для каждого события, да еще и в разных моделей, например:
public function saved()
{
    if (Cache::has('my_cache_key')) {
        Cache::delete('my_cache_key');
    }
}

public function deleted()
{
    if (Cache::has('my_cache_key')) {
        Cache::delete('my_cache_key');
    }
}

Может быть как то передать ключ в какой то класс / метод, наследоваться... ?

A:

как уже писали, сделай трэйт
trait Cache
{
    public function saveCache(string $key, $value)
    {
        if (!Cache::has(key)) {
            Cache::put($key, $value);
        }
    }

    public function deleteCache(string $key)
    {
        if (Cache::has($key)) {
            Cache::delete($key);
        }
    }
}

Добавь в модель
class Product extends Eloquent
{
   use Cache;
}

Используй так
$product = new Product();
$product->deleteCache('cache_key');

