Symfony2 / Doctrine:如何从实体类中持久保存实体?

时间:2012-09-01 15:09:41

标签: symfony doctrine symfony-2.1

问题简述 我在实体类中生成一个文件,并希望将文件名保存到数据库中。控制器不知道这个(文件名是否已经改变,因此从控制器继续存在是不切实际的。

实体是否有办法坚持自己?

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

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

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

1 个答案:

答案 0 :(得分:1)

Doctrine中的实体不是active records - 他们不能自己执行持久性行为,所以他们依赖于老大哥[实体经理]。

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

也可以查看lifecycle events,也许您可​​以发现在持久性之前触发@PreUpdate方法很有用[例如生成缩略图]。