Laravel5.1Elountit试图插入数据库而不是更新

Laravel5.1Elountit试图插入数据库而不是更新,laravel,eloquent,Laravel,Eloquent,我发现一个现有的记录如下: $m = new Model(); $value = 1; $m->whereField($field)->first(); // Get the model if ($m->exists()) { // this is true so I know it's there $m->anotherField = $value

我发现一个现有的记录如下:

$m = new Model();
$value = 1;
                $m->whereField($field)->first(); // Get the model
                if ($m->exists()) { // this is true so I know it's there
                    $m->anotherField = $value
                    $m->save(); // Laravel tries to INSERT vs UPDATE. Why????
                }

我知道可以找到记录,因为
exists()
是真的。然而,我试图保存它,拉威尔将其视为一张全新的唱片,并尝试插入而不是更新。我在这里做错了什么?

您需要为找到的项设置一个变量

$m = $m->whereField($field)->first();
if ($m->exists()) {
$m->anotherField = $value;
$m->save();
}
正如您现在看到的,
$m
仅指
新型号()
,而不是指找到的项目。

您还可以执行以下操作:

$m = $m->whereField($field)->firstOrFail();
//捕获异常。。。(日志或其他内容)

这样做可以捕获异常,以便记录和显示 如有必要,将显示错误页。要捕获ModelNotFoundException,请添加 将一些逻辑添加到app/Exceptions/Handler.php文件中


数据库中的主键设置是否正确?将在十分钟内检查此项。愚蠢的我。发生在最好的…:)@JoelJoelBinkswhat
->exists()
?我想
$m
可能是
object
null
$m->anotherField = $field;
$m->save();