分享一个Laravel好用的Cache宏_PHP教程

时间:2016-07-13 10:05:40 来源:互联网 作者: 神秘的大神 字体:

分享一个Laravel好用的Cache宏


Laravel提供的缓存工具很好用,手册里介绍了一些基本的用法,比如get,put,forget,forever等,一开始我是像下面这样使用的:

代码如下:


if (!$article = Cache::get('article_1')) {
$article = Article::find(1);
Cache::forever('article_1',$article);
}

这是最基本的用法,自动判断缓存是否存在,不存在则从数据库中取并写入缓存。

后来发现模型也自带remember 和 rememberForever方法,例如可以这样:

代码如下:


$article = Article::rememberForever('article_1')->where('id','=',1);

这个有局限性,在复杂查询时并不能完全缓存数据,比如使用了with()预加载关联数据时就无法缓存关联数据。

然后发现Cache也可以像Response那样自定义宏方法,遂作如下尝试:

代码如下:


//注册缓存存取宏
Cache::macro('want',function($key,$minutes=0,$callback){
if (!$data = Cache::get($key)) {
$data = call_user_func($callback);
if ($minutes == 0) {
Cache::forever($key,$data);
} else {
Cache::put($key,$data,$minutes);
}
}
return $data;
});

这个方法可以放在bootstrap/start.php里,也可以放在filter中的App::before()中,随自己项目方便吧,看下如何使用的:

代码如下:


$id = Input::get('id');
$article = Cache::want('article_'.$id,0,function() use ($id){
return Article::with('tags')->findOrFail($id,['id','cid','title','content_html as content','created_at','updated_at']);
});

个人挺喜欢这种写法的。希望大家能够喜欢本文内容。

www.bkjia.com true http://www.bkjia.com/PHPjc/962932.html TechArticle 分享一个Laravel好用的Cache宏 Laravel提供的缓存工具很好用,手册里介绍了一些基本的用法,比如get,put,forget,forever等,一开始我是像下面这样...

我要学编程网wyxbc.com最新课程二维码

相关文章


  • PHP如何安装和配置?
  • php 和 python 语法(部分)上的区别
  • PHP 随机数 C扩展随机数
  • PHP查询附近的人及其距离的实现方法_php技巧
  • 分享一个Laravel好用的Cache宏_PHP教程
  • 网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
    • PHP
    • MySQL
    • HTML
    • CSS
    • JavaScript
    • jQuery
    • AJAX
    • Html5
    <img width="180" height="124" src="http://img.php.cn/upload/course/000/000/003/5a50894c3ee41784.jpg" alt="独孤九贱(5)_ThinkPHP5视频教程">

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    • <img src="http://img.php.cn/upload/avatar/000/001/120/5bdff93895600756.jpeg"> Peter-Zhu
    • 2017-05-16 12:03:57
    • 点击数(161152)

    <img width="180" height="124" src="http://img.php.cn/upload/course/000/000/003/5a508deef1e58616.jpg" alt="独孤九贱(4)_PHP视频教程">

    独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 我要学编程网wyxbc.com出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    • <img src="http://img.php.cn/upload/avatar/000/001/120/5bdff93895600756.jpeg"> Peter-Zhu
    • 2017-03-20 22:47:17
    • 点击数(158155)

    <img width="180" height="124" src="http://img.php.cn/upload/course/000/000/003/5a5091db685e6482.jpg" alt="独孤九贱(1)_HTML5视频教程">

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:我要学编程网wyxbc.com原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    • <img src="http://img.php.cn/upload/avatar/000/001/120/5bdff93895600756.jpeg"> Peter-Zhu
    • 2017-03-13 10:15:11
    • 点击数(127137)

    <img width="180" height="124" src="http://img.php.cn/upload/course/000/000/003/5a9ce29211b72919.jpg" alt="ThinkPHP5实战之[教学管理系统]">

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    • <img src="http://img.php.cn/upload/avatar/000/001/120/5bdff93895600756.jpeg"> Peter-Zhu
    • 2017-07-24 16:48:56
    • 点击数(119557)

    <img width="180" height="124" src="http://img.php.cn/upload/course/000/000/003/5a53132d0bd62424.jpg" alt="PHP入门视频教程之一周学会PHP">

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    • <img src="http://img.php.cn/upload/avatar/000/000/004/5c511d62e6c0e698.png"> 大家讲道理
    • 2016-11-16 14:54:14
    • 点击数(119322)

    作者信息
    <img src="http://www.wyxbc.com/static/images/user_avatar.jpg" class="func-um_user gravatar avatar avatar-120 um-avatar um-avatar-uploaded">

    我要学编程网wyxbc.com

    认证0级讲师

    最近文章
    • 最新文章
    • 热门排行

      <img src="http://img.php.cn/upload/article/000/000/003/5b890a9e4417f872.png" style="width: 100%">

    • PHP如何按对象字段对对象数组进行排序?(代码实例)
    • PHP如何对日期数组进行排序?(代码示例)
    • PHP如何将字符串解析为多个变量?(代码示例)
    • Perl与PHP之间有哪些区别?Perl与PHP的对比
    • 如何将嵌套的PHP数组转换为CSS规则?(代码示例)
    • 如何用PHP在web浏览器中打开PDF文件?
    • PHP如何实现斐波那契数列?(代码实例)
    • PHP如何将整数数字转换为罗马数字?(代码示例)

      <img src="http://img.php.cn/upload/article/000/000/003/5b890a9e4417f872.png" style="width: 100%">

    • 最全最详细的PHP面试题(带有答案)
    • PHP四大主流框架的优缺点总结
    • php是什么文件?怎么打开?四种打开php格式文件方法(图)
    • PHP中使用CURL之php curl详细解析和常见大坑
    • PHPstorm破解方法
    • VPN是什么
    • 详解PHPMyadmin的配置
    • php如何解决中文乱码问题?

    相关视频教程

  • <img src="http://img.php.cn/upload/course/000/000/003/5a17982d48686254.jpg" alt="javascript初级视频教程" height="60"> javascript初级视频教程
  • <img src="http://img.php.cn/upload/course/000/000/003/5a179283c3885703.jpg" alt="jquery 基础视频教程" height="60"> jquery 基础视频教程
  • <img src="http://img.php.cn/upload/course/000/000/003/5a169239acf9a131.jpg" alt="javascript三级联动视频教程" height="60"> javascript三级联动视频教程
  • <img src="http://img.php.cn/upload/course/000/000/003/5a508a6eb1fe2744.jpg" alt="独孤九贱(3)_JavaScript视频教程" height="60"> 独孤九贱(3)_JavaScript视频教程
  • <img src="http://img.php.cn/upload/course/000/000/003/5a50879e1c81a337.jpg" alt="独孤九贱(6)_jQuery视频教程" height="60"> 独孤九贱(6)_jQuery视频教程
  • 相关视频章节

    • 制作第一个页面
    • PHP开发基础教程之实现一个用户注册
    • PHP开发基础教程之实现一个列表显示
    • 编写第一个 JavaScript 程序
    • jQuery 第一个jquery程序