2013-10-24 3 views
0

Мне нужно создать новый набор записей БД, используя те же самые данные, которые уже существуют. Смотрите рисунок ниже:Создайте новый объект из существующего объекта в БД с помощью Symfony2 и Doctrine2

enter image description here

Используя это в качестве примера мне нужно создать один и тот же набор записей, но только изменение столбца компании, меньше брать UPC = I5TYF1UPORMYUY4JT21Z, используя эту информацию, я должен быть в состоянии генерировать две строки, просто изменив компанию на 52 (любое количество). То, что я считаю, чтобы получить эти записи с помощью этого:

$entityStockDetailHasProductDetail = $this->getDoctrine()->getManager()->getRepository('ProductBundle:StockDetailHasProductDetail')->findBy(array(
    "product" => $request->request->get('product')['id'], 
    "upc" => $request->request->get('product')['upc'], 
)); 

Wich возвращает правильные записи, но я не знаю, как продолжить с этой точки. Мое лицо имеет следующие методы:

$entityStockDetailHasProductDetail->setProductDetail(); 
$entityStockDetailHasProductDetail->setUpc(); 
$entityStockDetailHasProductDetail->setProduct(); 
$entityStockDetailHasProductDetail->setCompany(); 
$entityStockDetailHasProductDetail->setCondition(); 
$entityStockDetailHasProductDetail->setContent(); 

Любые идеи?

ответ

2

Только петля над коллекцией, clone ваших сущностей, установите новую компанию и сохраняйте.

$em = $this->getDoctrine()->getEntityManager('default'); 
$collection = $em->getRepository('YourBundle:Entity')->findBy(array('...')); 

foreach ($collection as $entity) { 
    $newEntity = clone $entity; 
    $newEntity 
     ->setId(null) 
     ->setCompany($company) 
    ; 
    $em->persist($newEntity); 
} 
$em->flush(); 
+0

Спасибо, что именно так я и искал – Reynier

Смежные вопросы