如何彻底改变 laravel 中的 auth table?

How to completely change the auth table in laravel?

我有 accounts table 我想成为 Authenticatable 我已经完成了这个,已经做了答案@PintuKumar 在这个 Whosebug-link 中工作正常。

我的问题在这里,下面的行有效

auth()->user()->email

但是我想要的是下面这行,当我尝试的时候,它不起作用

auth()->account()->email

下面是returns错误:

Method Illuminate\Auth\SessionGuard::account does not exist. (View: D:\workspace\laravel\blog\resources\views\home.blade.php)

有人知道如何将函数名称从 user 更改为 custom 吗?我真的被这个困住了。

好吧,以前从未这样做过,但是您可以转到 vendor\laravel\framework\src\Illuminate\Auth\SessionGuard.php 并将 user() 更改为所需的名称。就个人而言,对于测试,我会复制整个函数,更改为 account() 但保留 users() 以防出现问题。

方法名称无关紧要,user方法并不意味着您的身份验证守卫获取一个App\User,它获取由该守卫验证的实体,无论它是什么。

如果你真的想这样做(注意它只不过是一个别名),你必须继承你的会话守卫并添加这个方法

public function account()
{
    return $this->user();
}

但这又是一个坏主意,特别是因为您忽略了每个守卫都实现的方法。如果有一天你决定更换使用过的守卫,你的代码也会因为同样的原因而崩溃。