我试图找到一个项目并更新它(如果它存在),或者创建一个新的项目(如果它不存在)。但是,由于某些原因,它似乎试图创建一个新对象,而不是在数据库中已经存在的情况下进行更新。

    $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;
    }

代码似乎产生了错误
"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '113' for key 'PRIMARY'
这很奇怪,因为我以前用过这个,而且效果很好——就好像是在这个特殊的情况下。

最佳答案

这意味着数组$usereditedobject包含主键的重复值,通常是“id”。
获取$object并尝试编辑其主键,以便其他行与导致失败的主键相同。
查看哪个字段是应用程序的主键,并确保没有创建任何重复项。

09-30 22:18