在 Laravel 5.1 中缓存延迟急切加载查询
Caching Lazy Eager Loading Queries in Laravel 5.1
如何缓存基于模型关系的延迟预加载查询。例如 -
$books = App\Book::all();
$books->load('author', 'publisher');
我可以用这样的方式缓存第一个查询
$books = Cache::remember('allbooks', 60, function() {
return App\Book::all();
});
如何缓存第二个查询?
如果没有直接的方法,请提出任何解决方法,可能带有示例代码。
更新:我需要单独执行第二个查询,这样我就可以单独清除这两个缓存键。
您可以使用查询生成器 with
方法:
$books = App\Book::with(['author','publisher'])->get();
或者简单地在可调用缓存中执行额外加载:
$books = Cache::remember('allbooks', 60, function() {
return App\Book::all()->load('author', 'publisher');
});
更新:要保持缓存分离,您需要两个变量,如下所示:
$books = Cache::remember('allbooks', 60, function()
{
return App\Book::all();
});
$booksAP = Cache::remember('allbooks_ap', 60, function() use ($books)
{
return $books->load('author', 'publisher');
});
如何缓存基于模型关系的延迟预加载查询。例如 -
$books = App\Book::all();
$books->load('author', 'publisher');
我可以用这样的方式缓存第一个查询
$books = Cache::remember('allbooks', 60, function() {
return App\Book::all();
});
如何缓存第二个查询?
如果没有直接的方法,请提出任何解决方法,可能带有示例代码。
更新:我需要单独执行第二个查询,这样我就可以单独清除这两个缓存键。
您可以使用查询生成器 with
方法:
$books = App\Book::with(['author','publisher'])->get();
或者简单地在可调用缓存中执行额外加载:
$books = Cache::remember('allbooks', 60, function() {
return App\Book::all()->load('author', 'publisher');
});
更新:要保持缓存分离,您需要两个变量,如下所示:
$books = Cache::remember('allbooks', 60, function()
{
return App\Book::all();
});
$booksAP = Cache::remember('allbooks_ap', 60, function() use ($books)
{
return $books->load('author', 'publisher');
});