Laravel中的Update方法不更新记录

Laravel中的Update方法不更新记录,laravel,Laravel,我需要更新数据库记录。首先,我通过它的主键找到记录,然后过滤请求中的项,最后调用upadate方法。嗯,什么也没发生 控制器 $rec = \App\Contact::findOrFail($id); $rec->update($request->only('first','last','city','region','zip')); 普通$request值如下所示: { "_token": "myeF9lZOQBB8oH4h1ogUoZe4aEeEPxCw4

我需要更新数据库记录。首先,我通过它的主键找到记录,然后过滤请求中的项,最后调用upadate方法。嗯,什么也没发生

控制器

$rec = \App\Contact::findOrFail($id);
$rec->update($request->only('first','last','city','region','zip'));
普通$request值如下所示:

   {
        "_token": "myeF9lZOQBB8oH4h1ogUoZe4aEeEPxCw49J4qFtU",
        "_method": "PATCH",
        "first": "asdf",
        "last": "egsrsdeeee",
        "city": "erg",
        "region": "wfd",
        "zip": "23443",
        "phones": [
            "25313",
            "25313234",
            "25313234",
            "2531323523"
        ],
        "emails": [
            "jid@se.cz"
        ],
        "addresses": [
            "Petrovka 123",
            "dalsi vole 12"
        ]
    }

我做错了什么?似乎应该可以工作。

这可能与质量分配或映射错误有关,请尝试手动分配值

$rec=\App\Contact::findOrFail($id);
$rec->first=$request->first;
$rec->last=$request->last;
$rec->city=$request->city;
$rec->region=$request->region;
$rec->zip=$request->zip;
$rec->save();
或者禁用模型中的批量分配保护
Contact.php

protected$guarded=[];//约洛!

希望这有帮助

我们能看看你们的模型吗?调用
$request->only()

另外,您确定update方法返回true吗?如果转储输出,是否可以显示输出:

$array = $request->only('first','last','city','region','zip');
\var_dump($rec->update($array));
最后,您还可以调用
$request->toArray()


由于您的模型已经知道它应该填充什么,如
$filleble
属性所示,因此您也就不再需要知道您应该在这个特定类中管理哪些索引,而只需要让模型完成它们的任务

在模型
Contact.php
的顶部添加以下内容:

protected $fillable = [
     'first',
     'last',
     'city',
     'region',
     'zip',
];

这将允许您仅批量分配这些字段。

我知道这样做是可能的。我的目标是以更优雅的方式实现同样的结果。更新了我的答案,我个人不推荐优雅的wayWell,如果我
dd
$rec
变量,它似乎已更新,但当我检查数据库时,没有什么新的内容-它保留了旧数据。您的模型上有这个吗<代码>受保护的$fillable=['first','last','city','region','zip']
protected $fillable = [
     'first',
     'last',
     'city',
     'region',
     'zip',
];