暂时从对象存储中删除对象 - TYPO3

Removing object temporarily from object storage - TYPO3

我有 2 个模型横幅和文件。横幅和文件通过 mm 关系连接。包含文件作为对象存储的横幅对象。当我从对象存储中删除文件时,该文件将被删除。我怎样才能只删除关系而不是删除对象?

$banner->getFiles();

return一个对象存储。

 $files = $banner->getFiles();
   foreach($files as $file){
       $uid = $file->getUid();
       if($uid==4){
           $banner->removeFiles($file);
       }
   }

当我完成上面的代码时,文件模型的删除字段更新为 1

你希望这个过程在什么样的动作中?如果您使用操作重定向或手动使用 PersistenceManager 保留 $banner 对象,则仅应真正删除该文件。

也许您还可以克隆 ObjectStorage,然后分离一些对象。

$files = clone $banner->getFiles();
   foreach($files as $file){
       $uid = $file->getUid();
       if($uid==4){
           $files->detach($file);
       }
   }

在此解决方案中,所有文件都应保留在 $banner 中,但在 $files 变量中删除了 UID4。

更新: 请参阅下面的评论。 deleted=1 是由模型内部的@cascade remove 注释引起的。