我有下面的代码来获取用户和每个用户的关系角色对象。
$query = (new UserModel())->newQuery();
$query->with("Role");
$data = $query->get(["UserName", "EmailAddress", "User_ID"]);
我在数据库中有3个角色,它们在缓存中。
是否有任何方法可以更改以下代码行:$query->with("Role");
,以便每次获取用户时都不需要从数据库中获取角色。
答案 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
});
}