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

首頁 > 開發 > PHP > 正文

分享一個Laravel好用的Cache宏

2024-05-04 23:31:46
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了分享一個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']);
});

 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万载县| 大渡口区| 邻水| 杭州市| 乌拉特后旗| 林芝县| 东阿县| 海原县| 瑞昌市| 定南县| 湖南省| 西安市| 霸州市| 平武县| 开平市| 芦溪县| 富源县| 皋兰县| 昌乐县| 朝阳市| 大姚县| 巨鹿县| 湘阴县| 印江| 西乌珠穆沁旗| 吉木萨尔县| 屯昌县| 新巴尔虎左旗| 浦东新区| 化州市| 南部县| 德化县| 宜章县| 防城港市| 老河口市| 九台市| 诸暨市| 抚顺县| 余江县| 漠河县| 西峡县|