【发布时间】:2019-07-27 20:13:31
【问题描述】:
当我将 email 字段从数据库更改为 user_email 时出现 Laravel 错误
Illuminate\Database\QueryException SQLSTATE[42S22]:找不到列: 1054 'where 子句'中的未知列'email'(SQL:select * from
ns_users其中
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?
【问题讨论】:
-
您需要覆盖默认的身份验证登录功能才能使用 user_email 字段。
-
浏览这个文件
vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php在这里你可以找到username()函数只需将它复制并粘贴到你的身份验证登录控制器中,根据 laravel 版本它可能是身份验证控制器或登录控制器。public function username() { return 'email'; }将此代码粘贴到其中并将返回值更改为user_email。
标签: laravel custom-authentication laravel-authentication