Изменение имени столбца электронной почты в laravel 5.6 в таблице пользователей по умолчанию - PullRequest
0 голосов
/ 04 июля 2018

У меня есть собственная таблица пользователей, которую я хочу использовать в аутентификации, но проблема в том, что поле электронной почты - это «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' : '' }}">

это нормально работает для входа в систему, Нужно решение для форм Забыли пароль и Сброс пароля, так как они не работают .

Так что любое решение для этого в Laravel 5.6

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Я думаю, вы можете использовать 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;
    }
}
0 голосов
/ 05 октября 2018

Чтобы сохранить модифицирующий код php (и что-то сломать), может быть проще создать представление 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';
0 голосов
/ 04 июля 2018

Вы можете добавить методы доступа и мутатора к пользовательской модели:

public function getEmailAttribute() {
    return $this->attributes['userEmail'];
}

public function setEmailAttribute($value) {
    $this->attributes['userEmail'] = $value;
}

Документы здесь

...