Eloquent firstOrNew 导致重复输入错误

Eloquent firstOrNew causes duplicate entry error

我正在尝试查找一个项目并在它存在时更新它,或者在它不存在时创建一个新项目。但是,出于某种原因,它似乎试图创建一个新对象而不是在数据库中已经存在的情况下进行更新。

    $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 并尝试编辑其主键,以便存在具有相同主键的其他行,从而导致失败。

查看哪个字段是您应用程序的主键,并确保您没有创建任何重复项。