$added_obj = [];
foreach ($something as $data) {
$obj = $this->class->function($data, $par2);
if (null !== $obj && !(array_key_exists
(->getVal1(), $added_obj[$obj->getVal1()] === $$obj->getVal2())) {
$this->persister->persist($obj);
$added_bank_account[$obj->getVal1()] = $obj->getVal2();
} else {
}
}
Что делает код: он вызывает функцию, которая возвращает сущность или значение null. Если объект был создан, выполняется проверка, существуют ли уже 2 значения в массиве, если нет, то сохраняются и добавляются 2 значения в массив в виде пары ключ / значение.
Но когда объект создается и уже существует в массиве, я не хочу, чтобы он сохранялся, но я не хочу ничего с ним делать.
Но когда я делаю с ним абсолютно ноль, я получаю ошибку: `` Несколько непостоянных новых сущностей были обнаружены через данный граф ассоциаций:
что имеет смысл, потому что доктрина не знает, что делать с созданной сущностью. Как я могу «уничтожить» созданную сущность, чтобы проблема была решена.
Когда создается только 1 объект, все работает нормально.





В вашем случае вы можете просто merge или clearentity от EntityManager
бывший :
$em->merge($obj);
ИЛИ
$em->clear($obj);
Я столкнулся с той же проблемой, потому что он пытался вставить дублированный реестр в определенную таблицу, хотя на самом деле я просто пытался его обновить.
Сразу после этого я делал persistс участием и flush.
Итак, я обнаружил, что (очевидно для многих, но определенно полезно):
-> объединить
будет дублировать реестр во многих случаях, если идентификатор не установлен должным образом.
Если вы пытаетесь обновить объект, это не лучшая идея.
-> сохраняться
Точно так же, если вы пытаетесь обновить объект, вы не можете его использовать. Он используется для добавления новой сущности в базу данных. Чтобы обновить запись, вы можете просто использовать flush, как вы можете видеть в этот пример из документации.