问题简述 我在实体类中生成一个文件,并希望将文件名保存到数据库中。控制器不知道这个(文件名是否已经改变,因此从控制器继续存在是不切实际的。
实体是否有办法坚持自己?
我的使用示例: 实体类用于库中的图像。我始终保留原始文件并使用该文件的缓存版本。更改图像(例如,旋转)时,将删除缓存版本。在其他情况下也会删除缓存版本。当需要该文件时,我检查缓存的文件是否存在,否则使用归档图像中的新文件名重新生成。我需要一个新的文件名,因为它会重置各种缩略图大小的缓存。
当我生成新文件时,我必须以某种方式将其文件名保存到数据库中。因为只在实体中决定何时重新生成图像,所以如果实体可以将自己保留到数据库中,那将是切实可行的,但我还没有找到解决方案。
有没有办法做到这一点,还是我应该使用一个完全不同的概念来重新生成图像文件?
答案 0 :(得分:1)
Doctrine中的实体不是active records - 他们不能自己执行持久性行为,所以他们依赖于老大哥[实体经理]。
即使控制器不知道任何文件名是否已更改,你也会这样做 - 只是每次都保留你的图片:如果没有改变,Doctrine将不会触及实体。
也可以查看lifecycle events,也许您可以发现在持久性之前触发@PreUpdate
方法很有用[例如生成缩略图]。