Laravel5中如何缓存数据表中的指定列?
没问题,我来帮你搞定这两个问题,一步步说清楚:
1. 缓存数据表的指定列
你当前的代码是缓存整个books表的所有数据,要只缓存某一列的话,只需要在数据库查询里用select()方法指定你要的列名就行。比如如果你想缓存title列,修改后的代码如下:
public function index() { // 缓存books表的title列,有效期1分钟 $booksTitles = Cache::remember('books_titles', 1, function(){ return DB::table('books') ->select('title') // 指定要缓存的目标列 ->get(); }); // 把缓存的数据传递给视图 return view('books.index', ['booksTitles' => $booksTitles]); }
这里建议把缓存键名改成更有辨识度的(比如books_titles),避免和其他缓存数据冲突。如果需要同时缓存多列,直接在select()里用逗号分隔列名即可,比如select('title', 'author')。
2. 控制器缓存是否自动应用到视图
不会“自动”生效,但只要你把缓存后的变量正确传递给视图,视图就会使用这份缓存的数据。
你原来的代码直接返回了缓存的$value,这其实是把数据当成纯响应返回了,而不是传给视图渲染。正确的做法是像上面的示例那样,用view()方法把缓存好的变量传递到对应视图文件中,之后在视图里使用对应的变量(比如$booksTitles),就能直接用到缓存的内容了。
简单总结:控制器负责从缓存(或数据库)获取数据,再把数据交给视图渲染,只要这个传递流程是对的,视图就会复用缓存的结果,不需要额外配置。
内容的提问来源于stack exchange,提问作者Hala Skhaya
相关产品推荐
相关产品推荐

