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;
...
}
}