У меня есть две сущности Доктрины: Пейдж и Синоним.Каждая страница содержит ссылки на несколько синонимов, и я хочу убедиться, что имена синонимов не дублируются.Поэтому я создаю команду 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;
}
(Свойство synonyms является ArrayCollection.)