public function cloneItem(Entity\Item $item) { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $newItem = clone $item; foreach ($item->getItemPackageRelatedBySurItemIds() as $itemPackage) { $newItemPackage = $this->cloneItemPackage($itemPackage); $newItemPackage->setSurItem($newItem); $newItem->addItemPackageRelatedBySurItemId($newItemPackage); $em->persist($newItemPackage); } $em->persist($newItem); if ($this->getTransfer()) { $item->setTransferredItem($newItem); $item->setStatus('transferred'); $em->persist($item); } return $newItem; }