$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 个值作为键/值对添加到数组中。
但是,当一个实体被创建并且它已经存在于数组中时,我不希望它被持久化,但我不想对它做任何事情。
但是,当我用它绝对为零时,我得到了错误: ```通过给定的关联图发现了多个非持久化的新实体:
- 通过关系“MyCompany\Client\Entity\Client#something”找到了一个新实体,该实体未配置为级联实体的持久操作:
这是有道理的,因为 Doctrine 不知道如何处理创建的实体。我怎样才能“销毁”创建的实体以便解决问题。
当只有 1 个对象创建时一切正常。
最佳答案
在您的情况下,您可以简单地从 EntityManager
merge
或 clear
entity
例如:
$em->merge($obj);
或
$em->clear($obj);
关于doctrine-orm - Doctrine ORM "Multiple non-persisted new entities were found through the given association graph:",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53672292/