Строка обновления Laravel 5.3 возвращает вызов функции-члена update() при null

#php #laravel #laravel-5.3

#php #laravel #laravel-5.3

Вопрос:

Я столкнулся с проблемой при обновлении строки в моей базе данных. Как только я отправляю свою форму обновления, она возвращает и выдает ошибку Call to a member function update() on null . Может кто-нибудь сказать мне, что я здесь делаю не так?

Мой код:

 public function update(Request $request){
      $user = Auth::user();
      $uid = $user->farmTag;

      $cowValues = array(
          'KilledOn' => $request['KilledOn'],
          'EID' => $request['EID'],
          'ManagementI/D' => $request['ManagementID'],
          'name' => $request['name'],
          'breed' => $request['breed'],
          'sex' => $request['sex'],
          'DOB' => $request['DOB'],
          'BoughtOn' => $request['BoughtOn'],
          'description' => $request['description'],
          'farmTag' => $uid,
      );

      Cow::find($request['EID'])->update($cowValues);

      return back();

    }
  

Полная ошибка:

 in CowsController.php line 280
at CowsController->update(object(Request))
at call_user_func_array(array(object(CowsController), 'update'), array(object(Request))) in compiled.php line 9355
at Controller->callAction('update', array(object(Request))) in compiled.php line 9382
at ControllerDispatcher->dispatch(object(Route), object(CowsController), 'update') in compiled.php line 8440
at Route->runController() in compiled.php line 8421
at Route->run(object(Request)) in compiled.php line 8117
at Router->IlluminateRouting{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 9948
at SubstituteBindings->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in Authenticate.php line 43
at Authenticate->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 3121
at VerifyCsrfToken->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 13430
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 11874
at StartSession->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 13176
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 13113
at EncryptCookies->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 9825
at Pipeline->then(object(Closure)) in compiled.php line 8118
at Router->runRouteWithinStack(object(Route), object(Request)) in compiled.php line 8109
at Router->dispatchToRoute(object(Request)) in compiled.php line 8100
at Router->dispatch(object(Request)) in compiled.php line 2446
at Kernel->IlluminateFoundationHttp{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 3183
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->IlluminatePipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->IlluminateRouting{closure}(object(Request)) in compiled.php line 9825
at Pipeline->then(object(Closure)) in compiled.php line 2390
at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2374
at Kernel->handle(object(Request)) in index.php line 53
  

Если есть какая-то недостающая информация, пожалуйста, дайте мне знать.

Спасибо!

Комментарии:

1. Похоже Cow::find($request['EID']) , что возвращает NULL , так что ваш код на самом деле NULL->update($cowValues) (именно так и написано в ошибке). Без определения find действительно сложно помочь.

2. попробуйте ввести a dd(Cow::find($request['EID'])) и посмотреть, что он выдает, если что-то попробуйте выполнить поиск с помощью предложения where Cow::where('EID', $request['EID'])

3. Спасибо за ваш ответ @Carlos, ваш подход сработал! Забавно, однако, что я использовал тот же подход в другом месте, и там он действительно сработал. В любом случае, спасибо!

Ответ №1:

Попробуйте это

 $cow = Cow::where('EID', $request->input('EID'))->first();

 if($cow)
 {
   $cow->update($cowValues);
 }
  

Комментарии:

1. Я не вижу никаких проблем с этим ответом, почему понижающий голос

2. Я думаю, им не понравилось: P