Laravel 5:Auth::user()是否每次使用数据库时都查询它?

在用户的编辑配置文件页面上,我想显示当前登录用户的现有值详细信息,如姓名、电子邮件、性别等。我的问题如下

  1. 是否建议用户Auth::user()->名称,Auth::user()->是否直接通过电子邮件填充表单字段?或者我应该创建一个变量,比如$user=Auth::user()在我的控制器中,并像普通对象一样将其传递到$user的我的视图中

  2. 在给定视图文件上多次使用Auth::user()是否每次使用时都会影响我的数据库

    提前谢谢

如果查看illighted\Auth中的SessionGuard.php文件,您将看到用于检索当前已验证用户的方法user()

/**
*获取当前经过身份验证的用户。
*
*@return\light\Contracts\Auth\authenticable | null
*/
公共函数用户()
{
如果($this->loggedOut){
回来
}
//如果我们已经检索到当前请求的用户,我们可以
//立即将其返回。我们不希望在上获取用户数据
//每次调用这个方法都会非常慢。
如果(!为null($this->user)){
返回$this->用户;
}
$id=$this->session->get($this->getName());
//首先,如果需要,我们将尝试在会话中使用标识符加载用户
//一个存在。否则,我们将检查此文件中的“记住我”cookie
//请求,如果存在,则尝试使用该请求检索用户。
$user=null;
如果(!为null($id)){
如果($user=$this->provider->retrieveById($id)){
$this->fireAuthenticatedEvent($user);
}
}
//如果用户为空,但我们解密了一个“recaller”cookie,我们可以尝试
//拉取该cookie上的用户数据,该cookie用作
//一旦我们有了一个用户,我们就可以将它返回给调用者。
$recaller=$this->getRecaller();
if(is_null($user)&!is_null($recaller)){
$user=$this->getUserByRecaller($recaller);
如果($user){
$this->updateSession($user->getAuthIdentifier());
$this->fireLoginEvent($user,true);
}
}
返回$this->user=$user;
}

//如果我们已经检索到当前请求的用户,我们可以立即将其返回。我们不希望每次调用此方法时都获取用户数据,因为这样会非常慢

如果(!为空($this->用户)){
返回$this->用户;
}

因此,多次调用user()不会多次调用数据库

发表评论