2012-01-08 9 views
2

私は何かを理解していません。Doctrine 2 HasLifecycleCallbacks

私はファイルをアップロードするときにHasLifecycleCallbacksを使用しています。新しいレコードを作成すると、ファイルは正常にアップロードされます。しかし、ファイルだけを変更しようとすると、何も起こりません。しかし、私は他のフィールド、例えば "名前"を変更し、新しいファイルを選択すると、ファイルがアップロードされます。

なぜこのコールバック:PrePersist(), PreUpdate(), PostPersist(), PostUpdate()は、ファイル入力以外のフィールドを変更した場合にのみトリガーされますか?

私はdoctrine2でsymfony 2を使用しています。

答えて

2

設定したファイルプロパティは、Doctrineによってエンティティフィールドとして追跡されません。例を辿った場合、Doctrineに関連するプロパティはおそらく "path"という名前になります。ファイルを変更しても、エンティティを永続化する必要があるとフラグすることはありません。

回避策として、更新日フィールドを更新時の現在のタイムスタンプに設定できます。