【发布时间】:2012-09-01 15:09:41
【问题描述】:
问题的简短描述: 我在实体类中生成一个文件,并希望将文件名保存到数据库中。控制器不知道这一点(无论文件名是否已更改,因此从控制器中持久化是不切实际的。
有没有办法让实体保持自身?
我的使用示例: 实体类用于图库中的图像。我总是保留原始文件并使用文件的缓存版本。当图像更改(例如旋转)时,缓存的版本将被删除。在其他情况下,缓存的版本也会被删除。当需要该文件时,我会检查缓存文件是否存在,否则会使用存档图像中的新文件名重新生成它。我需要一个新的文件名,因为它会重置各种缩略图大小的缓存。
当我生成那个新文件时,我必须以某种方式将它的文件名保存到数据库中。因为只在Entity中决定何时重新生成图像,所以如果实体可以将自己持久化到数据库中是可行的,但我还没有找到解决方案。
有没有办法做到这一点,或者我应该使用一个完全不同的概念来重新生成图像文件?
【问题讨论】:
-
没有问题。您仅将实体持久化一次,然后您就可以使用学说为您创建的实体。如果您有一个包含两个字段 [orig_filename, cached_filename] 的实体,并且该实体由学说管理,那么当您更改任何属性时,它将自动在 flush() 上更新数据库。
标签: symfony doctrine symfony-2.1