【问题标题】:Laravel 5.3 update row returns Call to a member function update() on nullLaravel 5.3 更新行在 null 上返回对成员函数 update() 的调用
【发布时间】:2016-10-18 03:04:35
【问题描述】:

我在更新数据库中的一行时遇到了问题。一旦我提交更新表单,它就会返回并出现错误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->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 9948
at SubstituteBindings->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 43
at Authenticate->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 3121
at VerifyCsrfToken->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13430
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 11874
at StartSession->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13176
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13113
at EncryptCookies->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{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->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 3183
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in compiled.php line 9840
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{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

如果有遗漏的信息,请告诉我。

谢谢!

【问题讨论】:

  • 看起来Cow::find($request['EID']) 返回NULL,所以你的代码实际上是NULL->update($cowValues)(这正是错误所说的)。如果没有find 的定义,真的很难提供帮助。
  • 尝试输入一个dd(Cow::find($request['EID'])) 看看它会吐出什么,如果有的话尝试使用where 子句Cow::where('EID', $request['EID']) 进行搜索
  • 感谢您的回复@Carlos,您的方法奏效了!有趣的是,尽管我在其他地方使用了相同的方法,但它确实奏效了。无论如何,谢谢!

标签: php laravel laravel-5.3


【解决方案1】:

试试这个

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

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

【讨论】:

  • 我看不出这个答案有什么问题,为什么不赞成
  • 我认为他们不喜欢:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-08
  • 2017-03-10
  • 1970-01-01
  • 2020-10-04
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多