【问题标题】:User Update error no result for model auth/user laravel 5模型身份验证/用户 laravel 5 的用户更新错误没有结果
【发布时间】:2015-10-29 02:26:42
【问题描述】:

我在更新用户详细信息时遇到错误..请告诉我。我正在使用 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>

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    错误来自您的findOrFail() 呼叫。它没有找到具有您要查找的 id 的用户。

    这可能与您的update 方法中的参数顺序有关。在控制器方法中,路由参数应该在注入参数之后。 documentation 声明“如果您的控制器方法也期望来自路由参数的输入,只需在其他依赖项之后列出您的路由参数。”尝试将更新方法更改为:

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

    编辑

    您的 POST 路由需要用户的 id 作为路由参数,但您在为 &lt;form&gt; 生成 URL 时没有提供此参数。 action() 函数的第二个参数采用一个值数组作为路由参数。您的表单语句应如下所示:

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

    action() 辅助函数的文档可以在here 找到。

    【讨论】:

    • 现在我收到与 url 相同的错误已更改为 user-edit/%7Bid%7D
    • @fazfaz %7B%7D 是花括号,这意味着您要访问的网址是 user-edit/{id}。这是不正确的。无论您必须用实际 id 替换 {id} 的任何代码都不起作用。您的问题中没有显示。通过打开表单更新您的问题。
    • @fazfaz 您需要将用户 ID 传递给 action 函数。第二个参数应该是用于路由参数的值数组。在这种情况下,一个只有用户 ID 的数组。
    • :我不明白..你能解释一下吗:(
    • 他的意思是你需要在表单中添加参数。
    【解决方案2】:

    只需像这样将用户 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) }}">
    

    【讨论】:

      猜你喜欢
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多