【发布时间】:2018-05-31 12:44:07
【问题描述】:
我有一些功能可以改变实体集合中的每个元素:
foreach ($screen->getBlocks() as $block) {
$block->setSomeField();
}
之后我尝试将对象持久化到数据库中:
$this->em->persist($screen);
$this->em->flush();
Screen::$blocks 属性有注释:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Block", mappedBy="screen", cascade={"remove", "persist"}, orphanRemoval=true)
* @ORM\OrderBy({"position": "ASC"})
* @Groups({"block"})
* @ApiSubresource
* @Assert\Valid
*
* @var Block[]|Collection
*/
private $blocks;
在刷新之前,我看到集合中的对象已更改,但之后 - 有值返回,似乎 entityManager 再次从数据库中获取。唯一对我有用的解决方案是在刷新之前添加 $this->em->clear();,但我无法理解逻辑..
【问题讨论】:
标签: symfony doctrine-orm symfony4