Caching Laravel缓存数据库原始查询

Caching Laravel缓存数据库原始查询,caching,laravel,Caching,Laravel,我在Laravel中有这个查询,我如何能将它缓存10分钟 $sorted_taxonomy_record = DB::select( DB::raw( 'select level1.id as level1, level2.id as level2 from taxonomies as level1 left outer join taxonomies as level2 on level2.parent_id = level1.id

我在Laravel中有这个查询,我如何能将它缓存10分钟

$sorted_taxonomy_record = DB::select(
    DB::raw(
        'select level1.id as level1, level2.id as level2 from taxonomies as level1 
        left outer join taxonomies as level2 on level2.parent_id = level1.id 
        where level1.parent_id = ' . $taxonomy->id . ' order by level1, level2'
    )
);
在末尾添加->记住(10)不起作用。

您可以使用
Cache::memory
方法:

$sorted\u taxonomy\u record=Cache::memory('sorted\u taxonomy\u record',10,function())
{
returndb::select(
DB::原始(
'从分类中选择level1.id作为level1,选择level2.id作为level2
level2.parent\u id=level1.id上的level2外部联接分类法
其中level1.parent_id='.$taxonomy->id.“按level1、level2排序”
)
);
});
但是建议使用:

$sorted\u taxonomy\u record=DB::table('taxonomy as level1')
->选择('level1.id作为level1','level2.id作为level2')
->join('level2'、'level2.parent_id'、'='、'level1.id'、'left-outer'等分类法)
->其中('level1.parent_id','=',$taxonomy->id)
->orderBy('level1')
->orderBy('level2')
->记住(10,'sorted_taxonomy_record')->get();

非常感谢,这很有效,除了我需要做一点修改:$sorted_taxonomy_record=DB::table('taxonomics as level1')->select(DB::raw('level1.id as level1,level2.id as level2')->join('taxonomics as level2','level2.parent_id','=','level1.id','level1.id','left outer')->其中('level1.parent_id',$taxonomy->id)->orderBy('level1')->orderBy('level2')->记住(10)->get();它不使用
select(DB::raw('…'))
(Laravel 4.2.1),您收到了一条错误消息还是什么?关于信息,
记住
方法中的第二个参数是
,因此如果您想清除该缓存,您可以通过删除DB::raw(“…”)来执行
缓存::忘记('sorted_taxonomy_record');
(例如,在更新
分类法
表时),我收到以下错误消息:SQLSTATE[42S22]:未找到列:1054“order子句”中的未知列“level1”(SQL:选择
level1
id
作为
level1,
分类法
level1
左外连接
分类法
作为
level2
上的
level2
父id
level1
id
其中
level1
父id
<1ode>asc,
level2
asc)我想是的,但是如果您没有在
memory
方法中指定第二个参数,那么您可以自己检查它,在“routes.php”文件
Event::listen('light.query',function($sql){var_dump($sql);}中添加此代码
因此您可以查看所有生成的查询我认为至少会缓存一个查询,无论如何添加
记住(10,'sorted\u taxonomy\u record'.$key)
foreach($taxonomies as$key=>$taxonomy)中的方法
。如果它不起作用,请提出新问题或编辑此问题。