使用Laravel的雄辩模型,我如何在访问对象时更新对象的数据,如果它已经
我有另一个API,我想确保数据是半最新的,但想缓存在我的数据库中的数据,而不是调用他们的API每次页面加载。
是否有Laravel在每次加载模型时调用的函数,我可以检查30天是否已经过去,调用API加载新数据,然后保存它?
@peter60*24*30
这个答案是不完整的,因为你必须每秒输入。
60*60*24*30
应该这样。
还不清楚您如何使用来自应用编程接口的数据,但是您可能会发现Laravel的缓存功能非常方便。具体的记住()
方法。
use Illuminate\Support\Facades\Cache;
// Put the result returned from the closure in the cache for 30 days
// under the key 'apidata' and serve this data off of cache if it already there
$apidata = Cache::remember('apidata', 60*24*30, function() {
// talk to your API
// and return the data from this closure
return $result;
});
您可以更进一步,并将其包装在服务类中,以使您的生活更轻松。类似于
namespace App;
use GuzzleHttp\Client;
use Illuminate\Support\Facades\Cache;
class ApiData
{
protected $client;
public function __construct(Client $client)
{
$this->client = $client;
}
public function all()
{
return Cache::remember('apidata', 60*24*30, function() {
$response = $this->client->get('http://httpbin.org/get');
return $response->getBody()->getContents();
});
}
}
然后使用它
// Get an instance off of IoC container
$api = app('App\ApiData');
$apidata = $api->all();
问题内容: 插入新记录或更新(如果存在)的快捷方式是什么? 问题答案: 这是“ lu cip”正在谈论的完整示例: 以下是Laravel最新版本上的文档更新链接 此处的文档:更新的链接
始终使用Laravel Elotent而不是原始SQL有什么好处吗? 我有一个习惯,首先在phpMyAdmin中编写SQL来检查关系,然后将其翻译成雄辩的ORM。 有时,翻译成雄辩的ORM是痛苦和耗时的,尤其是从长而复杂的SQL查询进行翻译。与使用雄辩的ORM相比,我能够用SQL快速编写。
我是Laravel的新手,我需要一些查询方面的帮助。这是我的情况。我有4张桌子: 用户(id、电子邮件、密码……) 表用户有5个用户,每个用户有10个策略。桌子公司有3个公司。 我想不显示策略表中的公司id,而是显示公司表中的公司名称。感谢您的帮助。
我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可
我有帖子表和评论表。我想得到所有的帖子与它的评论和以下返回只是帖子有评论: 更新 例如 ID帖 1个职位1 2后2 id post\u id评论 1萨姆勒大学评论 Post::with('comments')只返回有注释的帖子,它只返回第一篇帖子,因为第二篇帖子没有注释,我想获取所有帖子(有注释或没有注释)
我想每天00:00和13:30执行两次脚本,所以我写: 对我来说这似乎是错误的,因为像这样,脚本将在00:00、00:30、13:00和13:30启动。你知道吗?