将默认的Laravel身份验证电子邮件字段更改为user_email

时间:2019-03-06 08:17:54

标签: laravel custom-authentication laravel-authentication

email字段从数据库更改为user_email时出现Laravel错误

  

Illuminate \ Database \ QueryException SQLSTATE [42S22]:找不到列:   1054'where子句'中的未知列'email'(SQL:select * from   ns_users,其中email = admin@yahoo.com限制1)

Schema::create('ns_users', function (Blueprint $table) {
        $table->increments('user_id');
        $table->boolean('active')->default(0);/*by default the user is not active*/
        $table->integer('role')->default(0);/* role 0 means user and role 1 means admin!! */
        $table->string('name');
        $table->string('user_email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
});

有人知道我必须更改默认身份验证才能使用user_email字段而不是email吗?

3 个答案:

答案 0 :(得分:3)

默认情况下,Laravel使用email字段进行身份验证。如果您想对此进行自定义,则可以在username上定义一个LoginController方法:

public function username()
{
    return 'user_email';
}

答案 1 :(得分:0)

Wed Mar 06 14:17:00 GMT 2019
Wed Mar 06 14:17:25 GMT 2019

为我工作

答案 2 :(得分:0)

如果任何人都使用try方法手动处理laravel auth。 您需要做的就是将要传递给try方法的关联数组中的键名'email'更改为所需的键名。

Auth::attempt(['user_email' => $email, 'password' => $password], $remember)