2016-10-12 4 views
2

им с помощью доктрины на Symfony2 и им пытаются вставить некоторые значения на моем столе, но если я пытаюсь вставить дубликат ключа я получил ошибку от системы:Использование INSERT INTO .. ​​дублированием KEY UPDATE на доктрине

SQLSTATE [23000]: Integrity нарушение ограничения: 1062 запись Дубликат 'тест-1-2-2016-10-11-13' для ключа 'Unique'

Вот мой код:

   $insert = new Alerts(); 
       $insert->setAlKeyword($alert_keyword); 
       $insert->setAlLocation($alert_location); 
       $insert->setAlDevice($alert_device); 
       $insert->setAlSource($alert_source); 
       $insert->setAlSubDate(new \DateTime($alert_date); 
       $insert->setAlSubHour($alert_time); 
       $insert->setAlTotal(+1); 
       $em = $this->getDoctrine()->getManager("my_em"); 
       $em->persist($insert); 
       $em->flush(); 

P roblem относится к утверждению DUPLICATE KEY UPDATE: как я могу использовать это утверждение в доктрине?

спасибо

+0

Это может быть полезно: http://stackoverflow.com/questions/9699613/insert-ignore-on-duplicate-entries-in-doctrine2- symfony2 –

ответ

-1

Сделать использование Unique ограничения. Это предотвратит попытку сохранения, когда уникальный индекс уже существует.

Примените это к сущности для уникального индекса, установленного в таблице.

Если это композитный первичный ключ, look at this answer.

+0

Предотвращение дубликатов - не вопрос. –

0

Удалить unique: true на неоднозначном заявлении от вашей конфигурации места доктрины

+0

Это не правильное решение. В итоге вы получите 2 строки, в то время как OP запросит дублирующее заявление о обновлении ключа. – chteuchteu