国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

分享一個Laravel好用的Cache宏

2024-05-04 21:54:55
字體:
供稿:網(wǎng)友

 Laravel提供的緩存工具很好用,手冊里介紹了一些基本的用法,比如get,put,forget,forever等,一開始我是像下面這樣使用的:

 

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

 

這是最基本的用法,自動判斷緩存是否存在,不存在則從數(shù)據(jù)庫中取并寫入緩存。

后來發(fā)現(xiàn)模型也自帶remember 和 rememberForever方法,例如可以這樣:

 

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

 

這個有局限性,在復(fù)雜查詢時并不能完全緩存數(shù)據(jù),比如使用了with()預(yù)加載關(guān)聯(lián)數(shù)據(jù)時就無法緩存關(guān)聯(lián)數(shù)據(jù)。

然后發(fā)現(xiàn)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']);
});

 

個人挺喜歡這種寫法的。希望大家能夠喜歡本文內(nèi)容。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐平市| 尤溪县| 修武县| 中江县| 彩票| 彭州市| 定边县| 贡山| 页游| 富蕴县| 柳州市| 韶山市| 勃利县| 新平| 芜湖市| 盐山县| 洞口县| 黑河市| 内乡县| 怀安县| 元谋县| 黑山县| 宜黄县| 博白县| 万州区| 会泽县| 锡林浩特市| 黄平县| 碌曲县| 衡水市| 大同市| 清远市| 临清市| 广丰县| 高阳县| 泾阳县| 卓尼县| 资溪县| 波密县| 海伦市| 始兴县|