2015-07-31 5 views
-1

У меня проблема с моим обновлением, если у меня есть 1 строка данных, мое обновление работает, но если у меня есть 2 строки данных, я получил эту проблему.SQLSTATE [23000]: Нарушение ограничения целостности: 1062 Дублируемая запись

SQLSTATE [23000]: Integrity нарушение ограничения: 1062 Дублированный вход 2 Первичный

myController.php

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

Любая идея, Что проблема?

+1

есть либо проблема с внешним ключом, либо ограничение где-нибудь в колонке AI'd. Вы также можете попробовать «INSERT ... ON DUPLICATE KEY UPDATE» http://dev.mysql.com/doc/refman/5.6/en/insert-on-duplicate.html - Google ошибка, есть и другие возможные причины. –

+1

Опубликовали ли вы файл миграции для партнеров? Не могли бы вы также разместить свой входной массив? – Sturm

ответ

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

или есть ли способ обновить подкатегорию?

0

Я просто столкнулся с этим сам. В соответствии с документацией здесь:

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

С ПО DUPLICATE KEY UPDATE, значение затрагиваемые-строки для каждой строки является если строка вставляется в новую строку, а если существующая строка обновляется.

o когда ваш запрос выполняется, если вставлена ​​новая запись, возвращается его идентификатор. Если запись уже существует, обновляется существующая запись. Если обновление не требуется, потому что все значения совпадают, тогда возвращается идентификатор, а число измененных строк равно 0. Однако, если запись обновлена, идентификатор возвращается и число измененных строк равно . Бланкхолдер предполагает, что две строки были изменены (хотя только один из них был) и неправильно возвращают идентификатор плюс следующий последовательный идентификатор (т. Е. ID плюс 1). For example click here

0

У меня есть решение, и оно не подходит, но оно сработало. Я добавил еще один запрос на обновление для подкатегории.

Смежные вопросы

 Смежные вопросы