在Laravel 5.1中更新用户配置文件

时间:2016-12-01 08:02:29

标签: php laravel laravel-5.1 blade

我正在尝试更新一些用户个人资料数据,如下所示:

更新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');
    }

更新我想要的字段(例如手机)后,它只返回到配置文件屏幕,但不会在数据库中更新它。我究竟做错了什么?非常感谢你的帮助。

4 个答案:

答案 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');
}