如何在laravel 5中创建全局缓存函数

时间:2015-03-27 05:35:07

标签: php laravel

我需要在我的laravel 5应用程序的很多路径中使用下面的代码,所以首先:如何使它成为一个简单的函数?第二:如何缓存此查询的结果至少10分钟

$devices = \Auth::user()->devices()->whereNumber($number)->firstOrFail();

1 个答案:

答案 0 :(得分:2)

关于您的第一个问题,您可以向User类添加另一种方法 -

public function MyFuncName($number){
    return $this->devices()->whereNumber($number)->firstOrFail();
}

如果你希望为每个用户缓存它,你可以在Laravel 4中这样做 -

public function MyFuncName($number){
    return $this->devices()->whereNumber($number)->remember(10)->firstOrFail();
}

但是在Laravel 5中你应该这样做:

public function myFuncName($number){
    return \Cache::remember('user_device_' . $number, 10, function() use ($number)
    {
        return $this->devices()->whereNumber($number)->firstOrFail();
    });
}

要调用您要执行的功能

$devices = \Auth::user()->MyFuncName($number)

忘记提及你必须先验证用户,如果\ _ \ n \ n \ n \ n \ n \ n \ n \ n \ net \ _ \ n按钮返回null / false [用户未经过身份验证]然后会抛出此方法不存在的异常