#laravel #mongodb #eloquent #change-password
#laravel #mongodb #красноречивый #изменить пароль
Вопрос:
Я кодирую в laravel, мне нужно обновить свой пароль, я немного кодировал, но он показывает эту ошибку
Создание объекта по умолчанию из пустого значения
Вот мой код в контроллере
public function passwordChange(Request $request, $email)
{
$user = User::find($email);
$user->password = $request->get('password');
$user->save();
return redirect('home');
}
Я передал электронное письмо в сеансе
Это код моего блейд-файла
<section id="wrapper">
<div class="login-register" style="background-image:url(../assets/images/background/pic.jpg);">
<div class="login-box card">
<div class="card-body">
@if(Session::has('key'))
{{Session::get('key')['email']}}
@endif
<form class="form-horizontal form-material" id="loginform" method="POST" action="{{ url('reset-password', 'email')}}">
@csrf
<h3 class="box-title m-b-20">{{__('Recover Password')}}</h3>
<div class="form-group ">
<div class="col-xs-12">
<input class="form-control" type="password" required name="password" placeholder="New Password">
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<input class="form-control" type="password" required placeholder="Confirm Password">
</div>
</div>
<div class="form-group text-center p-b-10">
<div class="col-xs-12">
<button class="btn btn-info btn-lg btn-block text-uppercase waves-effect waves-light" type="submit">
{{__('Set New Password')}}</button>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
Вот мой файл маршрута
Route::post('reset-password/{email}', 'AdminController@passwordChange');
Комментарии:
1. похоже, вы не нашли здесь ни одного пользователя User::find($ email); попробуйте поставить dd после этой строки
2. введите также код вашего файла маршрута
3. Route:: post(‘reset-password /{email}’, ‘AdminController @passwordChange’); Нет, я тоже пробую dd. У меня есть пользователи
4. попробуйте после замены этого (Request $request, $ email) на ($email,Request $ request) в контроллере
5. Нет, все еще получаю ту же ошибку
Ответ №1:
::find()
Метод сбора выполняет поиск id
или указанного первичного ключа вашей модели, вам следует попробовать :
::where('email', $email)->first()
Ответ №2:
Проблема в том, что вы находите электронное письмо с помощью find
метода, потому что find()
метод находит запись по своему $primaryKey
свойству. Вместо этого вы можете сделать что-то вроде
$user = User::where('email',$email)->first()
$user->password = $request->get('password');
$user->save();
Я предлагаю вам сохранить пароль в форме хэша.
вы можете использовать bcrypt
вспомогательную функцию или вы можете сделать это с помощью Hash::make($yourPassword)