我有一个查询,我在routes.php
几乎每个get
请求下都使用该查询,并在我的许多视图中使用结果。在这一点上,我更有意义的是,我只需调用一次查询,就可以全局使用它而无需再次调用它。
以下是查询:
$followers = Follower::where('user_id', '1')
->get();
我该怎么做?
答案 0 :(得分:1)
为什么不在init函数中执行一次查询并将结果存储到全局变量中?
global $followers = Follower::where('user_id', '1')
->get();
答案 1 :(得分:0)
每次用户登录时都可以将其存储到会话中
喜欢这个例子
$followers = Follower::where('user_id', '1')
->first();
Session::put('followers', 'value');
只要你愿意,你可以像这样访问它
$value = Session::get('followers');
答案 2 :(得分:0)
session
的另一个答案是一个简单的解决方案,但是
我建议您为此目的使用Laravel Cache(因为这是标准做法)。
Laravel Cache::remember
接受三个参数。
在BaseController的构造函数中执行以下操作:
$id = 1; //User id
$key = md5('followers'.$id);
$minutes = 60; //cache for 1 hour, change it accordingly
$followers = Cache::remember($key, $minutes, function() use ($id) {
return Follower::where('user_id', $id)->get();
});
现在当然要使用Cache,你需要使用一些像Redis这样的缓存驱动程序。
如果您没有如何设置它请阅读我的其他answer。
虽然它可能会解决您的问题,但可能需要15-20分钟来设置并运行所有内容,但相信我一旦开始使用缓存,您一定会喜欢它。