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

时间:2015-07-31 02:30:59

标签: php laravel eloquent

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

  

SQLSTATE [23000]:完整性约束违规:1062重复条目2主要

myController.php

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

有什么想法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

我自己就碰到了这个。根据这里的文件:

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

  

如果ON DUPLICATE KEY UPDATE,如果行作为新行插入,则每行的受影响行值 1 ;如果更新现有行,则 2

o执行查询时,如果插入新记录,则返回其ID。如果记录已存在,则更新现有记录。如果不需要更新,因为值全部匹配,则返回ID并修改行数为0.但是,如果更新记录,则返回ID并修改行数 2 。密钥持有者假设已经修改了两行(即使只有一行)并且错误地返回ID加上下一个顺序ID(即ID加1)。 For example click here

答案 1 :(得分:0)

我将查询更改为此

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])

或者有没有办法更新子类别?

答案 2 :(得分:0)

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

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