将默认 Laravel 身份验证电子邮件字段更改为 user_email
Change the default Laravel authentificaton email field to user_email
当我将 email
字段从数据库更改为 user_email
时出现 Laravel 错误
Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found:
1054 Unknown column 'email' in 'where clause' (SQL: select * from
ns_users
where email
= admin@yahoo.com limit 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
吗?
默认情况下,Laravel 使用 email
字段进行身份验证。如果您想自定义它,您可以在 LoginController
:
上定义一个 username
方法
public function username()
{
return 'user_email';
}
public function getEmailAttribute()
{
return $this->user_email;
}
适合我
以防你们中的任何人使用尝试方法手动处理 laravel 身份验证。
您需要做的就是将密钥名称 'email' 更改为您在传递给尝试方法的关联数组中所需的名称。
Auth::attempt(['user_email' => $email, 'password' => $password], $remember)
email
字段从数据库更改为 user_email
时出现 Laravel 错误
Illuminate\Database\QueryException SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'where clause' (SQL: select * from
ns_users
where
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
吗?
默认情况下,Laravel 使用 email
字段进行身份验证。如果您想自定义它,您可以在 LoginController
:
username
方法
public function username()
{
return 'user_email';
}
public function getEmailAttribute()
{
return $this->user_email;
}
适合我
以防你们中的任何人使用尝试方法手动处理 laravel 身份验证。 您需要做的就是将密钥名称 'email' 更改为您在传递给尝试方法的关联数组中所需的名称。
Auth::attempt(['user_email' => $email, 'password' => $password], $remember)