如何将克隆的对象添加到存储库

时间:2019-04-05 07:59:04

标签: typo3-9.x

未克隆新对象

$clonedObj = clone $repatNewsObj;
$this->extendednewsRepository->add($clonedObj);
$this->persistenceManager->persistAll();

1 个答案:

答案 0 :(得分:0)

这不是用TYPO3复制extbase对象的方式。可悲的是,仅使用PHP克隆它就不会从extbase的角度重置对象。如果默认存储库的add方法在数据库中已经有一个uid,它将忽略“新”对象。因此,您的持久调用实际上并没有执行任何操作。

您可以自己创建一个新对象,根据源对象手动设置每个属性,也可以使用数据处理程序复制对象。 blog post(用德语)对此进行了描述,而older SO question在讨论同一问题。

如果要从自己的扩展名中克隆一个对象,则最佳实践是覆盖__clone方法并在其中重置诸如uid之类的内容。如果模型类来自第三方扩展,请从上面选择两种方法之一。