Caching Lazy Eager Loading Queries in Laravel 5.1



如何缓存基于模型关系的懒惰加载查询。例如

$books = AppBook::all();
$books->load('author', 'publisher');

我可以用类似的东西缓存第一个查询

$books = Cache::remember('allbooks', 60, function() {
             return AppBook::all();
         });

如何缓存第二个查询?

如果没有直接的方法,请建议任何解决方法,可能使用示例代码。

更新:我需要单独执行第二个查询,这样我就可以分别清除这两个缓存键。

您可以使用查询生成器with方法:

$books = AppBook::with(['author','publisher'])->get();

或者简单地在可调用的缓存中进行额外加载:

$books = Cache::remember('allbooks', 60, function() {
     return AppBook::all()->load('author', 'publisher');
});

更新:要保持缓存分离,您需要两个变量,如下所示:

$books = Cache::remember('allbooks', 60, function() 
{
     return AppBook::all();
});
$booksAP = Cache::remember('allbooks_ap', 60, function() use ($books)
{
     return $books->load('author', 'publisher');
});

最新更新