I am trying to INSERT OR UPDATE IF EXISTS
in one transaction.
in mysql, I would generally use DUPLICATE KEY
(\"UPDATE ON
I think best way is to call entityManager->merge($entity); Because it's the closest thing to update if exist operation as promised in documentation: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-objects.html
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
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();