Pat*_*ick 1 php doctrine symfony
我有两个教义实体:Page和同义词。每个页面包含几个同义词的引用,并且我想确保没有重复的同义词名称。因此,我创建了一个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();
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。但是,当我运行命令时,我发现该$page->removeSynonym($synonym);行抛出此ContextErrorException:
[Symfony \ Component \ Debug \ Exception \ ContextErrorException]警告:isset中的偏移量类型非法或为空
我知道我的页面包含多个同义词,并且我知道它们包含重复项。我在这里做错了什么?
=====
编辑:这是我的removeSynonym()函数:
public function removeSynonym(Synonym $synonym)
{
$this->synonyms->remove($synonym);
return $this;
}
Run Code Online (Sandbox Code Playgroud)
(同义词属性是ArrayCollection。)
如果synonyms是ArrayCollection,则应使用
$this->synonyms->removeElement($synonym);
Run Code Online (Sandbox Code Playgroud)
以您的方式,$this->synonyms->remove($synonym);它希望删除元素的键/索引,而不是元素本身。
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |