Mar*_*cel 5 php mysql laravel eloquent
我正在尝试查找一项并更新它(如果存在),或者创建一个新项(如果不存在)。然而,由于某种原因,它似乎试图创建一个新对象,而不是在数据库中已存在的情况下进行更新。
$object = ObjectItem::firstOrNew(array('object_item_id'=>$userEditedObject['object_item_id'], 'object_id'=>$object_id));
$object->setFields($userEditedObject);
if($object->save()){
return TRUE;
} else {
return FALSE;
}
Run Code Online (Sandbox Code Playgroud)
该代码似乎产生了错误
"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '113' for key 'PRIMARY'
这很奇怪,因为我以前用过这个,而且效果很好——似乎只是在这个特殊情况下。
这意味着数组 $userEditedObject 包含主键的重复值,通常是“id”。
您获取 $object 并尝试编辑其主键,以便其他行存在具有相同主键的情况,从而导致失败。
查看哪个字段是您的应用程序的主键,并确保您没有创建任何重复项。