Первый будет работать так, как вы хотите - однако вы обойдете ограничение безопасности, и теперь ваши страницы уязвимы для внедрения JavaScript (что является первоначальной причиной, по которой это изменение было сделано).
Второй просто не работает. Она не расширяет переменную ${parameter1}
, а просто кодирует ее как URL-адрес, например:
onclick="myFunction?$%7Bparameter1%7D"
Вы действительно должны делать это, как показано на странице.
th:data-parameter1="${parameter1}" onclick="myFunction(this.getAttribute('data-parameter1'));"
Согласно https://www.vivait.co.uk/labs/updating-entities-when-an-insert-has-a-duplicate-key-in-doctrine этого можно достичь с $entityManager->merge()
.
$entity = new Table();
$entity->setId(1);
$entity->setValue('TEST');
$entityManager->merge($entity);
$entityManager->flush();
Доктрина поддерживает REPLACE INTO
с использованием метода replace()
. Это должно работать точно так же, как ON DUPLICATE KEY UPDATE
, который вы искали.
Документы: Замена записей
Я думаю, что лучший способ - это вызвать entityManager-> merge ($ entity); Потому что это самая близкая вещь для обновления, если существует операция, как обещано в документации: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-objects.html
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();