当前位置: 首页 > 知识库问答 >
问题:

Laravel每30天进行一次雄辩的更新

孙凌
2023-03-14

使用Laravel的雄辩模型,我如何在访问对象时更新对象的数据,如果它已经

我有另一个API,我想确保数据是半最新的,但想缓存在我的数据库中的数据,而不是调用他们的API每次页面加载。

是否有Laravel在每次加载模型时调用的函数,我可以检查30天是否已经过去,调用API加载新数据,然后保存它?

共有2个答案

周学义
2023-03-14

@peter60*24*30

这个答案是不完整的,因为你必须每秒输入。

60*60*24*30

应该这样。

赵志
2023-03-14

还不清楚您如何使用来自应用编程接口的数据,但是您可能会发现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启动。你知道吗?