我如何使用 Symfony 学说从我的数据库中克隆所有数据?
How can I clone all data from my database with Symfony doctrine?
我尝试克隆我的 data
实体中具有 item
值 cf7c1ae00f
的所有记录
$dataEntity= new Data();
$cloneArray = $this->em->getRepository(Data::class)->findBy(['item' => 'cf7c1ae00f']);
foreach ($cloneArray as $cloneItem) {
$fieldClone = clone $cloneItem;
$dataEntity->setItem($fieldClone);
$this->em->persist($dataEntity);
}
$this->em->flush();
在我的数据库中有 5 条记录。所以我希望再添加 5 条记录。但是只添加了一条记录。
你写了 5 次相同的 $dataEntity
但内容不同。您可以在循环中构建该对象来解决您的问题,但您也可以直接坚持 $fieldClone
并完全跳过 $dataEntity
变量。
但是,实体具有唯一 ID,当您尝试保留克隆的实体时,这会导致错误。您将必须清空 id 和其他在集合/数据库中必须唯一的属性。
当使用 clone
关键字时,您可以轻松地在新对象上设置一些初始值,使用对象所属的 class 的 __clone()
方法。
所以如果你只需要清空id,你会在Data
class中添加一个克隆方法并将循环更改为:
数据class:
public function __clone() {
$this->id = null;
}
克隆代码:
$cloneArray = $this->em->getRepository(Data::class)->findBy(['item' => 'cf7c1ae00f']);
foreach ($cloneArray as $cloneItem) {
# Clone the object and automatically run the `__clone()` method of the class
$fieldClone = clone $cloneItem;
$this->em->persist($fieldClone);
}
$this->em->flush();
我尝试克隆我的 data
实体中具有 item
值 cf7c1ae00f
$dataEntity= new Data();
$cloneArray = $this->em->getRepository(Data::class)->findBy(['item' => 'cf7c1ae00f']);
foreach ($cloneArray as $cloneItem) {
$fieldClone = clone $cloneItem;
$dataEntity->setItem($fieldClone);
$this->em->persist($dataEntity);
}
$this->em->flush();
在我的数据库中有 5 条记录。所以我希望再添加 5 条记录。但是只添加了一条记录。
你写了 5 次相同的 $dataEntity
但内容不同。您可以在循环中构建该对象来解决您的问题,但您也可以直接坚持 $fieldClone
并完全跳过 $dataEntity
变量。
但是,实体具有唯一 ID,当您尝试保留克隆的实体时,这会导致错误。您将必须清空 id 和其他在集合/数据库中必须唯一的属性。
当使用 clone
关键字时,您可以轻松地在新对象上设置一些初始值,使用对象所属的 class 的 __clone()
方法。
所以如果你只需要清空id,你会在Data
class中添加一个克隆方法并将循环更改为:
数据class:
public function __clone() {
$this->id = null;
}
克隆代码:
$cloneArray = $this->em->getRepository(Data::class)->findBy(['item' => 'cf7c1ae00f']);
foreach ($cloneArray as $cloneItem) {
# Clone the object and automatically run the `__clone()` method of the class
$fieldClone = clone $cloneItem;
$this->em->persist($fieldClone);
}
$this->em->flush();