1

問題の簡単な説明: エンティティ クラス内でファイルを生成し、そのファイル名をデータベースに保存したいと考えています。コントローラーはこれを認識していません (ファイル名が変更されたかどうかに関係なく、コントローラーから永続化することは実用的ではありません。

エンティティが持続する方法はありますか?

私の使用例: エンティティ クラスは、ギャラリー内の画像用です。私は常に元のファイルを保持し、キャッシュされたバージョンのファイルで作業します。画像が変更されると (回転など)、キャッシュされたバージョンは削除されます。キャッシュされたバージョンは、他の場合にも削除されます。ファイルが必要な場合は、キャッシュされたファイルが存在するかどうかを確認します。存在しない場合は、アーカイブされた画像から新しいファイル名で再生成されます。さまざまなサムネイル サイズのキャッシュがリセットされるため、新しいファイル名が必要です。

その新しいファイルを生成するとき、そのファイル名を何らかの方法でデータベースに保存する必要があります。イメージをいつ再生成するかはエンティティでのみ決定されるため、エンティティがデータベースに永続化できれば実用的ですが、その解決策は見つかりませんでした。

これを行う方法はありますか、または画像ファイルを再生成するために使用する必要があるまったく異なる概念がありますか?

4

1 に答える 1

1

Doctrine のエンティティはアクティブなレコードではありません。永続化アクションを単独で実行できないため、ビッグ ブラザー [エンティティ マネージャー] に依存しています。

コントローラーがファイル名が変更されているかどうかを認識していなくても、あなたは知っています - 毎回画像を保持するだけです: 何も変更されていない場合、Doctrine はエンティティに触れません。

ライフサイクル イベントも参照してください。永続化の前にメソッドを起動すると便利な場合があります@PreUpdate(例: サムネイルの生成)。

于 2012-09-01T15:22:17.490 に答える