在我的事件中,我检查开始日期是否改变,如果是,那么我想插入新行,并取消更新
if ($args->hasChangedField('startAt')) {
// cancel update
// insert new entity
}
我做过类似的事情
public function preFlush(PreFlushEventArgs $args)
{
$em = $args->getEntityManager();
/** @var UnitOfWork $unitOfWork */
$unitOfWork = $em->getUnitOfWork();
$identityMap = $unitOfWork->getIdentityMap();
if (0 === count($identityMap)) {
return;
}
foreach ($identityMap as $entities) {
foreach ($entities as $entity) {
if ($entity instanceof Settelment) {
$original = $unitOfWork->getOriginalEntityData($entity);
if ($entity->getStartAt() !== $original['startAt']) {
$em->detach($entity); // remove entity
}
}
}
}
}
但是现在我删除了实体,但是我没有在这里定义新对象并坚持下去,我在数据库中得到了额外的行(这就是我想要的)但它是如何工作的?如果我没有创建实体,为什么我得到额外的行。