"REPLACE"有点坚持 Doctrine2 实体经理



我有一个实体,如果它不存在,我需要保留它,如果它存在,我需要更新/替换。

我不想使用->findBy()查找并执行更新或新操作。

使用 Doctrine1,您可以简单地创建一个新实体并使用方法->replace();而不是->save();。我有点需要这种行为来使用实体管理器的 Doctrine2。

<?php
$user = new User;
$user->setName('Mr.Right');
$em->persist($user);
$em->flush();

从 http://docs.doctrine-project.org/en/latest/reference/working-with-objects.html#persisting-entities :

如果 X 是预先存在的托管实体,则持久 操作。

我需要替换/更新预先存在的托管实体,而不是忽略,有人知道吗?

我不确定在不执行原始查询的情况下是否可行。但是你为什么不想先查一下呢?我会使用以下方法:

$user = $em->find('User', $id);
if (!$user) {
    $user = new User;
    $em->persist($user);
}
$user->setName('Mr.Right');
$em->flush();

相关内容

  • 没有找到相关文章

最新更新