Вы пишете одно и то же $dataEntity
5 раз с разным содержанием.Вы можете создать этот объект в цикле, чтобы решить вашу проблему, но вы также можете вместо этого сохранить $fieldClone
напрямую и полностью пропустить переменную $dataEntity
.
Однако у сущностей есть уникальные идентификаторы, и это приведет к ошибкам, когдаВы пытаетесь сохранить клонированную сущность.Вам придется очистить id и другие атрибуты, которые должны быть уникальными в коллекции / базе данных.
Вы можете легко установить некоторые начальные значения для нового объекта, когда используется ключевое слово clone
, используя __clone()
метод класса, к которому принадлежит объект.
Поэтому, если вам нужно только очистить идентификатор, вы бы добавили метод клона в класс Data
и изменили циклдо:
Класс данных:
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();