首页 > 解决方案 > Doctrine ORM“通过给定的关联图找到了多个非持久化的新实体:”

问题描述

$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 个对象时,一切正常。

标签: doctrine-ormdoctrine

解决方案


在您的情况下,您可以简单地mergeclearentityEntityManager

前任 :

$em->merge($obj);

或者

$em->clear($obj);

推荐阅读