doctrine-orm - 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 个值作为键/值对添加到数组中。
但是,当一个实体被创建并且它已经存在于数组中时,我不希望它被持久化,但我不想对它做任何事情。
但是,当我对它做绝对为零时,我得到了错误:```通过给定的关联图找到了多个非持久的新实体:
- 通过关系“MyCompany\Client\Entity\Client#something”找到了一个新实体,该关系未配置为对实体进行级联持久化操作:
这是有道理的,因为教义不知道如何处理所创建的实体。如何“销毁”创建的实体以解决问题。
当只创建 1 个对象时,一切正常。
解决方案
在您的情况下,您可以简单地merge
或clear
从entity
EntityManager
前任 :
$em->merge($obj);
或者
$em->clear($obj);
推荐阅读
- java - 通过 Google Workmanager 在特定时间设置通知
- c# - 有人使用 get 时的安全 web api
- r - R - ggplot - 实验室(副标题=...和标题=...)不工作
- regex - 正则表达式以、包含和结束于
- khan-academy - Khan Academy Towers of Hanoi 递归步骤 3
- python - Python多处理 - 对象没有属性
- javascript - Babel、npm、Polyfill 和 Object.assign 配置
- dns - 项目页面托管在 Github 页面上的自定义子域
- angular - 在Angular 5中将数据从父母传递给第n个孩子
- python - 在熊猫中有效地计算具有回溯期的滚动平均值