Laravel缓存DB原始查询



我在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::remember方法:

$sorted_taxonomy_record = Cache::remember('sorted_taxonomy_record', 10 , function()
{
    return 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'
            )
    );
});

但是建议使用查询生成器:

$sorted_taxonomy_record = DB::table('taxonomies as level1')
    ->select('level1.id as level1','level2.id as level2')
    ->join('taxonomies as level2', 'level2.parent_id', '=', 'level1.id', 'left outer')
    ->where('level1.parent_id','=',$taxonomy->id)
    ->orderBy('level1')
    ->orderBy('level2')
    ->remember(10,'sorted_taxonomy_record')->get();

最新更新