Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Doctrine2深度克隆后未创建多个记录_Php_Doctrine Orm - Fatal编程技术网

Php Doctrine2深度克隆后未创建多个记录

Php Doctrine2深度克隆后未创建多个记录,php,doctrine-orm,Php,Doctrine Orm,我遇到了以下问题。应用程序需要能够克隆带有所有相关实体的Season实体。我从中获得了灵感,一切都按其应有的方式运行,但在这一过程中,manytomy关系存在一个问题 请看一看所附的图片,它描绘了数据库图的一小部分,显示了我遇到问题的部分 我想要实现的状态是将Price实体的克隆绑定到现有的Offer实体。明确地说,我不能也不能克隆Offer实体,必须将Price实体的新克隆实例绑定到主Price实体实例绑定到的同一实例 克隆前,offer\u price表的内容示例 克隆后报价表的预期内容

我遇到了以下问题。应用程序需要能够克隆带有所有相关实体的
Season
实体。我从中获得了灵感,一切都按其应有的方式运行,但在这一过程中,
manytomy
关系存在一个问题

请看一看所附的图片,它描绘了数据库图的一小部分,显示了我遇到问题的部分

我想要实现的状态是将
Price
实体的克隆绑定到现有的
Offer
实体。明确地说,我不能也不能克隆
Offer
实体,必须将
Price
实体的新克隆实例绑定到主
Price
实体实例绑定到的同一实例

克隆前,
offer\u price
表的内容示例 克隆后
报价表的预期内容
。。。假设ID 77的
Price
是主记录,ID 79的
Price
是绑定到同一
Offer
记录的新克隆实例

实体定义-尽可能简化 价格
/**
*@实体
*/                                                                         
等级价格
{                                                                           
...                                                                     
/**                                                                     
*@var\Doctrine\Common\Collections\Collection of Offer
*@ManyToMany(targetEntity=“Offer”,mappedBy=“prices”,cascade={“persist”})
*                                                                      
*@get
*@set
*@add
*@删除
*@包含
*/                                                                     
私人$3优惠;
/**                                                                     
*类构造
*                                                                      
*@返回无效
*/                                                                     
公共函数构造()
{                                                                       
父项::_构造();
$this->offers=newarraycollection();
}                                                                       
/**                                                                     
*克隆实体
*                                                                      
*@返回无效
*/                                                                     
公共函数
{                                                                       
如果($this->getId()){
$this->setId(空);
$this->offers=newarraycollection();
}                                                                   
}                                                                       
/**                                                                     
*将和提供添加到“提供”集合中
*                                                                      
*@param Offer$Offer
*@returnself
*/                                                                     
公共功能添加优惠(优惠$Offer)
{
$this->offers->add($offer);
退还$this;
}                                                                       
...                                                                     
}                                                                           
提供
/**
*@实体
*/                                                                         
集体报价
{                                                                           
...                                                                     
/**                                                                     
*@var\doctor\Common\Collections\Collection of Price
*@ManyToMany(targetEntity=“Price”,inversedBy=“offers”,cascade={“persist”})
*
 offer_id | price_id                                                        
----------+----------                                                       
       47 |       77                                                        
 offer_id | price_id                                                        
----------+----------                                                       
       47 |       77                                                        
       47 |       79                                                        
/**                                                                     
 * Clone entity                                                         
 *                                                                      
 * @return void                                                         
 */                                                                     
public function __clone()                                               
{                                                                       
    if ($this->getId()) {                                               
        $this->setId(null);                                             

        ...                                                             

        $priceClonedCollection = new ArrayCollection();                 
        foreach ($this->prices as $price) {                             
            $priceClone = clone $price;                                 
            $priceClone->setSeason($this);            
            foreach ($price->getOffers() as $offer) {
                $offer->addPrice($priceClone);                   
                $priceClone->addOffer($offer);                          
            }                                                           
            $priceClonedCollection->add($priceClone);                   
        }                                                               
        $this->prices = $priceClonedCollection;                         

        ...                                                             

    }                                                                   
}