我用教义来做这件事:
$ds = new Entity();
$ds->setId(4);
$ds->setField('Foo');
$em->merge($ds);
$em->flush();
教义执行更新。
但我这样做:
$e = $em->find(1);
$r = $e->getRelatedCollection()->get(0);
$e->getRelatedCollection()->remove(0);
$e->getRelatedCollection()->remove(1);
$a = new TypeRelated();
$a->setId($r->getId());
$a->setField("bar");
$e->getRelatedCollection()->set(0, $a);
$a->setInverse($e);
$em->merge($e);
$em->flush();
Doctrine 执行两次删除,但不执行任何更新。为什么?
我尝试了一些情况,即使分离的实体具有 Id,Doctrine 也会尝试插入一个新字段。
注意到我在一对一关系中使用orphanRemoval=true
$e
。
如何在同一刷新中进行删除和更新?
我的问题是,在PUT
操作中,我想在同一操作中添加、删除和修改相关字段。我该怎么做?我尝试了很多案例,但我无法解决它。
你可以尝试持久化而不是合并
$em->持久($e);