Php 获取对象、操作数据并作为新行插入

Php 获取对象、操作数据并作为新行插入,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有三个学说对象,它们可以以不同的方式相互连接。我需要从我的数据库中获取它们,操作一些数据并将它们作为新行插入 例如: entity A: id user manipulateThis B C entity B: id user manipulateThis C entity C: id user manipulateThis A D entity D: id manipulateThis C $allA = SELECT a FROM Acme\Bundle\A a WHERE us

我有三个学说对象,它们可以以不同的方式相互连接。我需要从我的数据库中获取它们,操作一些数据并将它们作为新行插入

例如:

entity A:
id
user
manipulateThis
B
C

entity B:
id
user
manipulateThis
C

entity C:
id
user
manipulateThis
A
D

entity D:
id
manipulateThis
C


$allA = SELECT a FROM Acme\Bundle\A a WHERE user=':user'
$allB = SELECT b FROM Acme\Bundle\B b WHERE user=':user'
$allCandD = SELECT c FROM Acme\Bundle\C c JOIN c.d WHERE user=':user'
现在,我想操作该列的所有操作,并将获得的所有对象添加到数据库的新行中。我该怎么做

我不能只保留所有这些对象,然后刷新它们,因为当对象被克隆时(如果我想要新行,这需要发生),ID将被删除

我怎样才能做到这一点

更新

看来我可以用克隆来做这件事。但是现在我遇到了一个问题,我不知道一个对象是否被持久化

例如: 实体A可以与实体B有关系。但不是所有的B实体都与实体A有关系。但我也需要保留这些实体。 我可以持久化并刷新所有A实体,所有具有连接的B实体也将被刷新。但现在,B实体没有任何联系。我不能刷新所有的B实体,因为我得到了两行。还有,如何解决C和D实体的这个问题,这两个实体甚至更远?

仅使用PHP就足以将一个实体复制为新行

$newEntity = clone $alreadyPersistedEntity;

// Manipulate $newEntity as desired

$em->persist($newEntity);
$em->flush();

你想用克隆人做什么?他们是否应该有新ID?@v.eigler他们应该成为数据库中的新行,因此他们需要新ID的可能副本@v.eigler我知道我可以使用克隆。但我想问的是,如何克隆他们的关系。你发布的链接只讨论了一个对象,它是否也克隆了它的关系以将它们作为新行插入?不,请看这里,好的,这确实是我要寻找的。我更新了我的问题,因为当我使用这个方法时,一个新的问题出现了。