gpt4 book ai didi

symfony - Doctrine 2.1 - 多对多级联合并后关系丢失 - Symfony2

转载 作者:行者123 更新时间:2023-12-04 20:16:47 24 4
gpt4 key购买 nike

在合并具有相关实体的实体后,关系设置为级联持久和合并操作,关系丢失!

以下是实体:

class Event implements NormalizableInterface
{
/**
* @ORM\ManyToMany(targetEntity="Participant", inversedBy="events", cascade={"persist", "merge"})
* @ORM\JoinTable(name="event_participant",
* joinColumns={@ORM\JoinColumn(name="event_id", referencedColumnName="id", onDelete="CASCADE")},
* inverseJoinColumns={@ORM\JoinColumn(name="participant_id", referencedColumnName="id", onDelete="CASCADE")}
* )
*/
private $participants;
}


class Participant implements NormalizableInterface
{
/**
* @ORM\ManyToMany(targetEntity="Event", mappedBy="participants", cascade={"persist", "merge"})
*/
protected $events;
}

这是我的加入:
foreach ($events as $event)
{
if (!$event->hasParticipant($participant)) {

$event->addParticipant($participant);
}
if (!$participant->hasEvent($event)) {

$participant->addEvent($event);
}
}

这是我的合并代码:
echo "Before merge participant count: ".count($event->getParticipants()).PHP_EOL;

$event = $em->merge($event);

echo "After merge participant count: ".count($event->getParticipants()).PHP_EOL;

...这是输出:
Before merge participant count: 2
After merge participant count: 0

..和数据库看起来像这样:
table               | rows
-------------------------------
event | 1
-------------------------------
participant | 2
-------------------------------
event_participant | 0
-------------------------------

谁能看出我哪里傻了?

顺便说一句,还有比这更多的关系。我在这里简化了一些事情以使解释更清楚。我的其他关系不会受到合并的负面影响。此外,我正在控制台命令中进行合并,而不是在 Controller 中。如果有帮助,我可以发布更多代码:)

我也在使用 Doctrine 2.1.7 和 Symfony 2.0.15

非常感谢,马修

最佳答案

我遇到了同样的问题,并通过在合并后刷新实体来修复它:

$mergedEntity = $entityManager->merge($serializedEntity);
$entityManager->refresh($mergedEntity);

关于symfony - Doctrine 2.1 - 多对多级联合并后关系丢失 - Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11198434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com