Model Cache Collections
- Posted March 28, 2017
- Developer Tools
Introduction
You might often find yourself wanting to cache data and invalidate it when an entry or stream is updated. Model cache collections let you do just that! This article will show you how it works and how to do it yourself.
Basic Usage
To get started first inject your repository into the class you will be working in. We'll assume a controller in this article. Then call the cache
method on the repository just as you would with the cache manager in Laravel. The cache
method expects key
, lifetime
, and value
parameters.
public function example(PostRepositoryInterface $posts)
{
return $posts->cache('example_key', 300, function() {
return $this->view->make('module::my/complicated/view');
});
}
Direct Model Use
The above example will cache the content of the closure for a maximum of 300 seconds and will invalidate should any entry in the posts stream be modified.
You can also call the cache
method directly on the model:
public function example()
{
return (new PostModel())->cache('example_key', 300, function() {
return $this->view->make('module::my/complicated/view');
});
}
Flushing Cache Manually
Though cache is invalidated automatically when any entry in the associated stream is updated, created, deleted, or mass updated you can also forcefully flush cache by calling flushCache()
on either the model or repository.