1

问题的简短描述: 我在实体类中生成了一个文件,并希望将文件名保存到数据库中。控制器不知道这一点(无论文件名是否已更改,因此从控制器持久保存是不切实际的。

实体有没有办法坚持自己?

我的使用示例: 实体类用于图库中的图像。我总是保留原始文件并使用文件的缓存版本。当图像更改(例如旋转)时,缓存的版本将被删除。在其他情况下,缓存的版本也会被删除。当需要该文件时,我会检查缓存文件是否存在,否则会使用存档图像中的新文件名重新生成它。我需要一个新的文件名,因为它会重置各种缩略图大小的缓存。

当我生成那个新文件时,我必须以某种方式将它的文件名保存到数据库中。因为仅在实体中决定何时重新生成图像,所以如果实体可以将自身持久保存到数据库中,那将是可行的,但我还没有找到解决方案。

有没有办法做到这一点,或者我应该使用一个完全不同的概念来重新生成图像文件?

4

1 回答 1

1

Doctrine 中的实体不是活动记录——它们不能自己执行持久化操作,因此它们依赖于老大哥 [实体管理器]。

即使控制器不知道任何文件名是否已更改,也知道- 每次都保留您的图片:如果没有任何更改,Doctrine 不会触及实体。

也看看生命周期事件,也许你会发现@PreUpdate在持久性之前触发一个方法很有用[例如生成缩略图]。

于 2012-09-01T15:22:17.490 回答