[英]Changing email column name in laravel 5.6 in default users table
我有自己的用户表,我想在auth中使用,但问题是电子邮件字段是“userEmail”而不是“email”。
对于登录页面,我在LoginController.php中覆盖了以下方法
public function username()
{
return 'userEmail';
}
并在输入字段中更改了名称。
<input id="userEmail" type="email" name="userEmail" value="{{ old('userEmail') }}" class="{{ $errors->has('userEmail') ? 'is-invalid' : '' }}">
这适用于登录, 需要Forgot Password和Reset Password表单的解决方案,因为它们不起作用 。
所以Laravel 5.6中的任何解决方案
您可以将accessor和mutator方法添加到用户模型:
public function getEmailAttribute() {
return $this->attributes['userEmail'];
}
public function setEmailAttribute($value) {
$this->attributes['userEmail'] = $value;
}
为了保存修改php代码(并破坏某些东西),可能更容易创建users表的sql视图并将实际字段名称映射到User类正在使用的名称,例如
CREATE VIEW v_user_auth AS
SELECT user_id AS id
, user_created_time AS created_at
, user_updated_time AS updated_at
, user_name AS name
, user_email AS email
, user_password AS password
, user_remember_token AS remember_token
FROM t_user
在User.class中添加以下内容以使其使用视图:
protected $table = 'v_user_auth';
我认为你可以利用Laravel Mutators:
https://laravel.com/docs/5.6/eloquent-mutators
没有时间测试以下内容但应该是您正在寻找的内容:
class User extends Model
{
/**
* Get the user's email.
*
* @param string $value
* @return string
*/
public function getEmailAttribute($value)
{
return $this->userEmail;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.