原则 2 从实体更新

2022-08-30 10:48:22

是否可以按如下方式更新实体:

$data       = new ATest();  // my entity
$data->id   = 1;            // id 1 already exists, I just want to update this row
$data->name = "ORM Tested"; // changed the name

$entityManager->persist($data);
$entityManager->flush();

这将插入并更改对象的 id,而不是更新数据库中的现有行。


答案 1

您应该调用 merge 而不是 persist:

$data = new MyEntity();
$data->setId(123);
$data->setName('test');

$entityManager->merge($data);
$entityManager->flush();

答案 2

我不得不使用

$entityManager->merge($data)

推荐