Laravel 5 Laravel 5.4更新方法不更新

Laravel 5 Laravel 5.4更新方法不更新,laravel-5,patch,Laravel 5,Patch,我有这条路线: Route::resource('my-account','ProfileController') 我的控制器中有此方法: public function update(Request $request, User $user) { DB::enableQuerylog(); $user->update([ 'first_name' => $request->first_name,

我有这条路线: Route::resource('my-account','ProfileController')

我的控制器中有此方法:

public function update(Request $request, User $user)
{
        DB::enableQuerylog();

        $user->update([
            'first_name' => $request->first_name,
            'last_name' => $request->last_name,
            'phone' => $request->phone
        ]);

        dd(\DB::getQuerylog());
}
我有以下表格:

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

    {{ method_field('PATCH') }}

    {{ csrf_field() }}

    <div class="form-group" id="firstNameDiv">

        <label class="control-label">First Name</label>

        <input type="text" class="form-control" name="first_name" value="{{ $user->first_name }}">

        <span class="help-block" id="firstNameError"></span>

    </div>

{{method_字段('PATCH')}
{{csrf_field()}}
名字
当我提交表单时,表中的名字没有更新

如果我尝试dd($request->first_name),我会看到我输入的名称


DB日志返回一个空数组,如下所示:[],为什么它不更新?

尝试将
dd
作为方法中要执行的第一件事,以确保它被触发。至少每次我似乎什么都没做的时候,我就是这样做的

接下来,为什么要在没有
where
的情况下执行
update
?除非要更新所有记录,否则查询中应该有
where()

顺便说一句,我不确定这件事。。。您不应该将您的模型注入构造函数吗

要么试试这样

$user = User::find($id) // or in your case $user->find($id);
$user->firstname = $request->input('firstname');
$user->save();


如果不在表中使用created_at和updated_at,则应使用以下方法禁用它们:
public$timestamps=false

确保您的用户模型中有$fillable

protected $fillable = ['first_name', 'last_name', 'phone'];

谢谢,但我在不同的型号/控制器中使用完全相同的方法,并且在那里一切正常。用户被发送到我不需要在何处执行的方法。我将dd($request)放在方法中的第一件事,它向我显示了包含所有字段和正确值的请求。您是否尝试了
DB::table('users')
?如果这样做有效,那么您的雄辩的代码或雄辩的核心代码中一定有错误。请尝试使用查询生成器进行检查。对不起,我需要在哪里使用DB::table(“用户”),为什么?问题是,这与我拥有的其他控制器配合得很好。我将其全部更改为向该方法发送$id,而不是$user,并执行findOrFail等操作。我只需要理解为什么此代码在其他位置工作时不起作用。抱歉,我无法立即理解您在上一条评论中的意思。所以它可以工作,但不能只在那个控制器上。我认为它根本不起作用,所以我说使用Query builder而不是Eloquent来检查它是否是Eloquent的错。谢谢你的帮助,我很感激,如果你
dd($user)
,你会得到什么?可能
$user
实例不是您所认为的那样?
protected $fillable = ['first_name', 'last_name', 'phone'];