Laravel : 从空值创建默认对象

Laravel : Creating default object from empty value

我在尝试编辑数据库中已存在的数据时遇到以下问题。 我的控制器名称是 UserController.php

错误:从空值创建默认对象。

我可以从我的数据库中提取数据并 post 它在我的表单中。尝试编辑时发生错误。
这是导致错误的代码块。

public function update(Request $request, $id)
{

    $this->validate($request, [
        'fname' => 'required',
        'lname' => 'required',
        'email' => 'required',
        'phone' => 'required',
        'address' => 'required',
        'country' => 'required',
        'city' => 'required',
        'bday' => 'required',
        'username' => 'required',
        'password' => 'required',
        'access' => 'required'
    ]);
    $userList = users::find($id);
    $userList->fname = $request->get('fname');
    $userList->lname = $request->get('lname');
    $userList->email = $request->get('email');
    $userList->phone = $request->get('phone');
    $userList->address = $request->get('address');
    $userList->country = $request->get('country');
    $userList->city = $request->get('city');
    $userList->bday = $request->get('bday');
    $userList->username = $request->get('username');
    $userList->password = $request->get('password');
    $userList->access = $request->get('access');
    $userList->save();
    return redirect()->route('users.index')->with('success', 'Data Updated');


}

我可以从调试器中看到我发送了新数据

GET Data empty
POST Data
_token   "mnC6GliLHdSazZkEpaxZQ97aAChr2LObcc9clMlk"
_method  "PATCH"
fname    "test"
lname    "user"
email    "test@user.lara"
phone    "12345678990"
address  "Streat"
country  "countryplace"
city     "somecity"
bday     "2018-01-01"
username     "tester"
password     "test"
access   "Client"

但突出$userList->fname = $request->get('fname'); 并说:"Creating default object from empty value"

我是 laravel 的新手,不明白为什么会这样。 是因为我的表格吗?

  <form method="post" action="{{action('UserController@update','$id')}}">
                    {{csrf_field()}}
              <input type="hidden" name="_method" value="PATCH" />

我认为问题出在这里:

<form method="post" action="{{action('UserController@update','$id')}}">

你不应该为 $id 使用引号,它应该是:

<form method="post" action="{{action('UserController@update',$id)}}">

现在因为你有引号,行:

$userList = users::find($id);

没有找到用户,因为实际上它在做:

$userList = users::find('$id');