Могу ли я обновить свой пароль в laravel и mongodb?

#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)