2017-10-05 4 views
1

に1をクローニングした後、私は、エンティティのクローンを作成しようとしている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の値は常にnullであり、理由を理解できません。私のエンティティコード:

/** 
* @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でありますクローンはclonedProduct配列にありません。どのようにそれを解決するための任意のアイデア?

答えて

0

私は方法作成 、問題を解決:

public function addToArray($product) 
{ 
    this->clonedProduct[] = $product; 
    return $this; 
} 
関連する問題