【发布时间】:2018-05-18 07:37:09
【问题描述】:
我有两个 Doctrine 实体:Page 和 Synonym。每个页面都包含对几个同义词的引用,我想确保没有同义词名称重复。所以我创建了一个 symfony 命令,它在页面上运行同义词,检查重复项:
protected function dedupeSynonyms(Page $page, EntityManager $em)
{
$synonyms = $page->getSynonyms();
$names = [];
foreach ($synonyms as $synonym) {
if (in_array($synonym->getName(), $names)) {
$page->removeSynonym($synonym);
} else {
$names[] = $synonym->getName();
}
$em->persist($synonym);
}
$em->flush();
}
到目前为止,一切都很好。但是当我运行我的命令时,我发现$page->removeSynonym($synonym); 行抛出了这个ContextErrorException:
[Symfony\Component\Debug\Exception\ContextErrorException] 警告: isset 中的非法偏移类型或为空
我知道我的页面包含多个同义词,并且我知道它们包含重复项。我在这里做错了什么?
=====
编辑:这是我的 removeSynonym() 函数:
public function removeSynonym(Synonym $synonym)
{
$this->synonyms->remove($synonym);
return $this;
}
(同义词属性是一个 ArrayCollection。)
【问题讨论】:
-
请链接你的
removeSynonym()函数 -
谢谢。完成。