尝试编辑数据库中已经存在的数据时遇到以下问题。 我的控制器名称是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" />
答案 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');