2017-10-05 95 views
1

我想克隆一個實體,其在班裏一個一對多的自我參照和目標是顯示如下:陣列空克隆一對多的關係後自我引用

parent entity: 
product { 
    id: 34 
    parent_product_id: null 
    clone_products_id: [12,45,24] 
} 

child clone entity: 
product { 
    id: null 
    parent_product_id: 34 
    clone_products_id: null 
} 

我成功克隆實體,但在父項中,clone_products_id數組的值始終爲空,並且無法找出原因。我的實體代碼:

/** 
* @ORM\OneToMany(targetEntity="Product", mappedBy="parentProduct", cascade={"persist"}) 
*/ 
private $clonedProduct; 

/** 
* @ORM\ManyToOne(targetEntity="Product", inversedBy="clonedProduct", cascade={"persist"}) 
* @ORM\JoinColumn(name="parent_product_id",referencedColumnName="id") 
*/ 
private $parentProduct; 

public function __construct(){ 
    $this->clonedProduct = new \ArrayCollection(); 
} 

//getting the ids of the clones 
/* 
* @Groups({"product"}) 
*/ 
public function getClonedProductIds(){ 

    $clones = $this->getClonedProduct(); 
    $idsClone = new \ArrayCollection(); 
    foreach ($clones as $item) { 
    $id = $item->getId(); 
    $idsClone->add($id); 
    } 

    return $idsClone; 
} 

和克隆功能:

public function clone(Product $product){ 

    $em = $this->container->get('doctrine.orm.entity_manager'); 

    $clonedProduct = clone $product; 
    $clonedProduct->setParentProduct($product); 

    $em->persist($clonedProduct); 
    $em->flush(); 

    return $clonedProduct; 
} 

和主函數來調用我們的克隆功能:

public function productAction(){ 

    $clonedProduct = $productRepo()->clone($product); 
    return $this->json($clonedProduct, Response::HTTP_OK, [], 
     ['groups' => ['product']]); 
} 

所以,唯一的問題是對的IDS克隆不在克隆的產品數組中。任何想法如何解決它?

回答

0

我解決了問題, 我創建的方法:

public function addToArray($product) 
{ 
    this->clonedProduct[] = $product; 
    return $this; 
}