Ваш аксессор должен быть в порядке, но вы должны убедиться, что вы также строчите указанное значение, например, в вашем контроллере:
Предполагая, что вы используете LoginController по умолчанию, поставляемый из Laravel: я переписал *Метод 1003 * из AuthenticatesUsers
в App\Http\Controllers\Auth\LoginController
protected function credentials(Request $request)
{
$credentials = [
$this->username() => strtolower($request->get($this->username())),
"password" => $request->get("password")
];
return $credentials;
}
Это прекрасно работает, когда все электронные письма, хранящиеся в базе данных, уже хранятся в нижнем регистре.Если вы начинаете с нуля, вы можете принудительно хранить электронные письма в нижнем регистре по умолчанию.Просто внедрите следующий мутатор в свой App\User
:
public function setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}
Если вы уже сохранили смешанный регистр электронной почты, вы можете обновить все электронные письма на строчные, используя этот запрос:
UPDATE users SET email = LOWER(email);
Но это все еще кажется неполным, и вы, возможно, не хотите манипулировать своими данными таким образом.Я почти уверен, что есть больше возможностей сделать это, но, к сожалению, пока я не могу углубиться в это.Однако моей следующей попыткой будет расширение / запись пользовательского UserProvider.