【发布时间】:2016-12-01 08:02:29
【问题描述】:
我正在尝试更新一些用户配置文件数据,如下所示:
在 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');
}
更新我想要的字段(例如电话)后,它只是返回到配置文件屏幕,但不会在数据库中更新它。我究竟做错了什么?非常感谢您的帮助。
【问题讨论】:
-
你是否在你的用户模型中填充了这些属性?
-
是的。默认情况下它是这样的,但我对其进行了修改,使其保持这种状态,结果是一样的。 protected $fillable = ['name', 'email', 'password', 'phone'];
-
您没有将此值分配给它们正确的列。它必须是
$user->column = 'value';,因为您使用的是模型
标签: php laravel laravel-5.1 blade