在用户的编辑配置文件页面上,我想显示当前登录用户的现有值详细信息,如姓名、电子邮件、性别等。我的问题如下
-
是否建议用户Auth::user()->;名称,Auth::user()->;是否直接通过电子邮件填充表单字段?或者我应该创建一个变量,比如
$user=Auth::user()在我的控制器中,并像普通对象一样将其传递到$user的我的视图中
-
在给定视图文件上多次使用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()
不会多次调用数据库