问题是这是一个MySQL特有的问题,因此它不会被教义直接涵盖。
正如注释中提到的,您需要为此编写一个RawSQL查询。这是最简单的方法。
如果您想要它更复杂和真正的DB独立,那么就看看事件和它的可能性。在执行实际查询之前,您可以检查是否存在,如果存在,则相应地执行操作。
一种独立于ORM/PHP的方法是编写一个存储过程/触发器来处理数据库端的这个问题。
对于Symfony2,请使用原始SQL:
$em->getConnection()->prepare("INSERT INTO table SET
some_fields = "some data", created_at = NOW()
ON DUPLICATE KEY UPDATE
some_fields = "some data", updated_at = NOW()
")->execute();