国产探花免费观看_亚洲丰满少妇自慰呻吟_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']);
});

 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴江市| 邹平县| 沙雅县| 克东县| 漳平市| 胶南市| 射阳县| 永靖县| 潜山县| 丰宁| 逊克县| 永新县| 五莲县| 涪陵区| 聂荣县| 南京市| 通州市| 翼城县| 永宁县| 五峰| 剑阁县| 马尔康县| 黑水县| 铜陵市| 华坪县| 二连浩特市| 双城市| 萨嘎县| 平乡县| 许昌县| 元谋县| 阳曲县| 建宁县| 都昌县| 江阴市| 新郑市| 桐梓县| 巴林右旗| 和平县| 陇西县| 建德市|