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();