使用Symfony2和Doctrine2从DB中的现有对象创建新对象

时间:2013-10-24 20:38:31

标签: symfony doctrine symfony-2.3

我需要使用已存在的相同数据创建一组新的DB记录。见下图:

enter image description here

以此为例,我需要创建相同的记录集,但只需更改列公司,减去UPC = I5TYF1UPORMYUY4JT21Z,使用此信息我只需将公司更改为{{{}即可生成两行1}}(任何数字)。我认为使用这个记录来获取这些记录:

52

Wich返回正确的记录,但我不知道如何从那一点继续。我的实体拥有所有这些方法:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

只需循环遍历集合,克隆您的实体,设置新公司并保留。

$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();