implementing "update if exists" in Doctrine ORM implementing "update if exists" in Doctrine ORM sql sql

implementing "update if exists" in Doctrine ORM


According to https://www.vivait.co.uk/labs/updating-entities-when-an-insert-has-a-duplicate-key-in-doctrine this can be achieved with $entityManager->merge().

$entity = new Table();$entity->setId(1);$entity->setValue('TEST');$entityManager->merge($entity);$entityManager->flush();


The only thing I can think of is to query first for the entity if it exists otherwise create new entity.

if(!$entity = Doctrine::getTable('Foo')->find(/*[insert id]*/)){   $entity = new Foo();}/*do logic here*/$entity->save();


Doctrine supports REPLACE INTO using the replace() method. This should work exactly like the ON DUPLICATE KEY UPDATE you were looking for.

Docs: Replacing Records