从缓存中获取关系对象

时间:2018-11-13 05:31:14

标签: laravel laravel-5.6 laravel-5.7

我有下面的代码来获取用户和每个用户的关系角色对象。

$query = (new UserModel())->newQuery();
$query->with("Role");
$data = $query->get(["UserName", "EmailAddress", "User_ID"]);

我在数据库中有3个角色,它们在缓存中。 是否有任何方法可以更改以下代码行:$query->with("Role");,以便每次获取用户时都不需要从数据库中获取角色。

1 个答案:

答案 0 :(得分:0)

也许您可以加入Eloquent的Retrieved事件。从数据库中检索模型时,可以从缓存中获取角色并将其设置在模型上。也许这可能是您的解决方案?

在此处查看有关雄辩事件的Laravel文档:https://laravel.com/docs/5.6/eloquent#events

也许这会对您有所帮助,请将其添加到模型类中:

/**
 * Boot the model.
 */
protected static function boot()
{
    parent::boot();
    static::retrieving(function ($user) {
        $user->fetchFromCache("Role"); //replace this line with however you could fetch it from the cache
    });
}