我正在尝试更新一些用户个人资料数据,如下所示:
更新routes.php中的个人资料
Route::get('/profile/update/{id}', [
'as' => 'user.edit',
'uses' => 'UserController@edit'
]);
在我的UserController.php
中public function edit($id)
{
$user = User::findOrFail($id);
return view('user/edit', compact('user'));
}
我在edit.blade.php中的行动
{!! Form::model($user, ['action' => ['UserController@update', 'id' => $user->id], 'method' => 'PUT']) !!}
<div class="form-group">
{!! Form::label('name', 'Name') !!}
{!! Form::text('name', $user->name, [
'class' => 'form-control'
]) !!}
</div>
<div class="form-group">
{!! Form::label('email', 'E-mail') !!}
{!! Form::text('email', $user->email, [
'class' => 'form-control'
]) !!}
</div>
<div class="form-group">
{!! Form::label('phone', 'Phone') !!}
{!! Form::text('phone', $user->phone, [
'class' => 'form-control'
]) !!}
</div>
<p><button type="submit" class="btn btn-primary">Update Profile</button></p>
{!! Form::close() !!}
更新路线:
Route::put('/profile/update/{id}', [
'as' => 'user.update',
'uses' => 'UserController@update'
]);
UserController.php中的函数
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->update([
$request->input('name'),
$request->input('email'),
$request->input('phone')
]);
return Redirect::route('user.profile');
}
更新我想要的字段(例如手机)后,它只返回到配置文件屏幕,但不会在数据库中更新它。我究竟做错了什么?非常感谢你的帮助。
答案 0 :(得分:0)
尝试这样做:键应该是数据库中的字段名称,并确保在模型中将它们设置为$fillable
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->update([
'name' => $request->name,
'email' => $request->email,
'phone' => $request->phone
]);
return Redirect::route('user.profile');
}
添加用户模型
protected $fillable=['name','email','phone'];
答案 1 :(得分:0)
我没有看到您正在保存数据。试试这个:
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->name=$request->input('name');
$user->email=$request->input('email');
$user->phone=$request->input('phone');
$user->save();
return Redirect::route('user.profile');
}
答案 2 :(得分:0)
如果请求的参数名称与您的模型相同,则可以执行以下操作:
$user->update($request->all());
您要更新的模型属性应在模型中排名为可填写
protected $fillable = ['name', 'email'];
答案 3 :(得分:0)
您应该更新“更新”方法:
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->update($request->only(['name', 'email', 'phone']));
return Redirect::route('user.profile');
}