我有一个accounts
表,我想在其中进行可认证,而我这样做了,已经在此{{3中完成了 @PintuKumar }},并且工作正常。
我的问题在这里,下面的行在起作用
auth()->user()->email
但是我想要的是下面的行,当我尝试时,它行不通
auth()->account()->email
它在下面返回一个错误:
方法Illuminate \ Auth \ SessionGuard :: account不存在。 (视图:D:\ workspace \ laravel \ blog \ resources \ views \ home.blade.php)
任何人都知道如何将功能名称从用户更改为 custom 吗?我真的很坚持。
答案 0 :(得分:2)
方法名称无关紧要,user
方法并不意味着您的身份验证保护程序会获取App\User
,它会获取由该安全程序验证的实体,无论它是什么。
如果您确实要执行此操作(请注意,它不过是别名),则必须继承会话防护并添加此方法
public function account()
{
return $this->user();
}
但这又是一个坏主意,特别是因为您忽略了由每个后卫实现的方法。如果有一天您决定更改已使用的防护,则您的代码也会由于相同的原因而中断。
答案 1 :(得分:-2)
好吧,以前从未这样做过,但是您可以转到vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php
并将user()
更改为所需的名称。就个人而言,对于测试,我将复制整个函数,更改为account()
,但保留users()
以防出现问题。