我的更新有问题,如果我有一行数据我的更新有效,但如果我有2行数据,我就遇到了这个问题。
SQLSTATE [23000]:完整性约束违规:1062重复条目2主要
myController.php
public function update(Partner $partner) {
$partner->update(array_except(Input::all(), '_token'));
}
有什么想法可以解决这个问题吗?
答案 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]);