Laravel:从空值创建默认对象

时间:2018-10-09 17:23:02

标签: laravel laravel-5 eloquent edit laravel-request

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

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

我可以从数据库中提取数据并将其发布到表单中。尝试编辑该错误时发生。
这是导致错误的代码块。

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'); 并说:“从空值创建默认对象”

我是laravel的新手,无法理解为什么会这样。 是因为我的表格吗?

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

1 个答案:

答案 0 :(得分:2)

我认为问题出在这里

<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');