在 Laravel 5.1 更新用户个人资料
Update user profile in Laravel 5.1
我正在尝试更新一些用户个人资料数据,如下所示:
在 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');
}
更新我想要的字段后(例如 phone),它只是 returns 到配置文件屏幕,但不会在数据库中更新它。我究竟做错了什么?非常感谢您的帮助。
试试这个:键应该是数据库中的字段名称,并确保在模型
中将它们设置为$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'];
我没有看到你在保存数据。试试这个:
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');
}
如果请求的参数与您的模型同名,您可以这样做:
$user->update($request->all());
您要更新的模型属性应在模型中排名为可填充
protected $fillable = ['name', 'email'];
您应该更新您的 'update' 方法:
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->update($request->only(['name', 'email', 'phone']));
return Redirect::route('user.profile');
}
我正在尝试更新一些用户个人资料数据,如下所示:
在 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');
}
更新我想要的字段后(例如 phone),它只是 returns 到配置文件屏幕,但不会在数据库中更新它。我究竟做错了什么?非常感谢您的帮助。
试试这个:键应该是数据库中的字段名称,并确保在模型
中将它们设置为$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'];
我没有看到你在保存数据。试试这个:
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');
}
如果请求的参数与您的模型同名,您可以这样做:
$user->update($request->all());
您要更新的模型属性应在模型中排名为可填充
protected $fillable = ['name', 'email'];
您应该更新您的 'update' 方法:
public function update(Request $request, $id)
{
$user = User::findOrFail($id);
$user->update($request->only(['name', 'email', 'phone']));
return Redirect::route('user.profile');
}