SQLSTATE[23000]:违反完整性约束:1062 重复条目

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry

我的更新有问题,如果我有 1 行数据,我的更新有效,但如果我有 2 行数据,我遇到了这个问题。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 2 Primary

myController.php

public function update(Partner $partner) {
    $partner->update(array_except(Input::all(), '_token'));
}

知道问题出在哪里吗?

我自己 运行 对此感兴趣。根据此处的文档:

https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

With ON DUPLICATE KEY UPDATE, the affected-rows value per row is 1 if the row is inserted as a new row, and 2 if an existing row is updated.

o 当您的查询执行时,如果插入了一条新记录,则返回它的 ID。如果记录已经存在,则更新现有记录。如果因为值全部匹配而无需更新,则返回一个 ID,修改的行数为 0。但是,如果记录已更新,则返回 ID,修改的行数为 2。 keyholder 假设两行已被修改(即使只有一行被修改)并且错误地返回 ID 加上下一个顺序 ID(即 ID 加 1)。 For example click here

我将查询更改为此

public function UpdateItems(Item $updateitem, $item_id){ $sname = Input::get('subcategory'); $subname = ItemSubcategory::where('name',$sname)->first(); $input = Input::except('_token'); $updateitem->where('item_id', $item_id) ->update($input, ['subcategory' => $subname->id]); }

现在我的代码可以正常工作了,但我遇到了一个小问题。除 subcategory 列外,所有列都可以更新。现在我的问题是,是否可以使用

将子类别列与其他列一起更新
update($input, ['subcategory' => $subname->id])

或者有什么方法可以更新子类别?

我得到了一个解决方案,它不合适但有效。我刚刚为子类别添加了另一个更新查询。

Item::whereItem_id($item_id)->update($input);
Item::whereItem_id($item_id)->update(['subcategory' => $subname->id]);