用户更新错误,模型授权/用户级别5没有结果


User Update error no result for model auth/user laravel 5

更新用户信息时出现错误。请给我一些建议。我用的是laravel版本5

误差

ModelNotFoundException in Builder.php line 125: No query results for model [App'User].

我使用的控制器文件auth/userController.php。

public function edit($id)
    {
        $User =  User::findOrFail($id);
//    return $User->username;
        return view('auth.editUser')->withUser($User);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int $id
     * @return Response
     */
    public function update($id, Request $request)
    {
        $User = User::findOrFail($id);
        $this->validate($request, [
            'username' => 'required',
            'full_name' => 'required'
        ]);
        $input = $request->all();
        $User->fill($input)->save();
        Session::flash('flash_message', 'Task successfully added!');
        return redirect()->back();
    }

及以下是我的路线

Route:: get('user-edit/{id}', 'Admin'UserController@edit');
Route:: post('user-edit/{id}', 'Admin'UserController@update');

下面是我的edit.blade.php文件的视图

<form class="form-horizontal" role="form" method="POST" action="{{ action('Admin'UserController@update') }}">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="form-group">
        <label class="col-md-4 control-label">Full Name</label>
        <div class="col-md-6">
            <input  type="text" class="form-control" name="full_name" value="{{ $user->full_name }}">
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-4 control-label">Username</label>
        <div class="col-md-6">
            <input  type="text" class="form-control" name="username" value="{{ $user->username }}">
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-4 control-label">Password</label>
        <div class="col-md-6">
            <input  type="password" class="form-control" name="password" value="{{ $user->password }}">
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-6 col-md-offset-4">
            <button type="submit" class="btn btn-primary">
                Register
            </button>
        </div>
    </div>
</form>

就像这样传递一个用户id给你的表单:

<form class="form-horizontal" role="form" method="POST" action="{{action('Admin'UserController@update', $user->id) }}">

你也可以使用表单生成器,这样做:

{!! Form::open(['method' => 'POST', 'action' => ['UserController@update', $user->id], 'class' => 'form-horizontal']) !!}

如果整个动作部分让你感到困惑,你可以这样做:

<form class="form-horizontal" role="form" method="POST" action="{{url('user-edit/'.$user->id) }}">

错误来自您的findOrFail()调用。它没有找到具有您正在寻找的id的用户。

这可能是由于您的update方法中参数的顺序。在控制器方法中,路由参数应在注入参数之后。文档中写道:"如果你的控制器方法也需要路由参数的输入,只需在其他依赖项后面列出你的路由参数。"尝试将更新方法更改为:

public function update(Request $request, $id) {
    //
}

编辑

您的POST路由需要用户的id作为路由参数,但是您在为<form>生成URL时没有提供此参数。action()函数的第二个参数采用一组值作为路由参数。您的表单语句应该看起来像:

<form class="form-horizontal" role="form" method="POST" action="{{ action('Admin'UserController@update', ['id' => $user->id]) }}">

action()帮助函数的文档可以在这里找到。