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


How to make global cached function in laravel 5

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

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

关于您的第一个问题,您可以向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)

忘记了之前必须验证用户,就好像''Auth::user()返回null/false[用户未通过身份验证],然后它会向您抛出一个异常,即该方法不存在