Person という名前のエンティティを扱っているとしましょう。Person には、身長、体重などのプロパティがあり、時間の経過とともに変化します。
class Person
{
private $id;
private $weight;
private $height;
// etc...
}
ユーザーが戻って、時間の経過に伴う変化をなんらかのグラフで確認できるようにしたいと考えています。個別のプロパティごとに連続する変更を保存する最良の方法は何ですか?
DoctrineExtension Loggable インターフェースを見てきましたが、それはオブジェクト全体の変更エントリを作成するため、変更されたオブジェクトから独立した特定のプロパティによって後方に「ブラウズ」することはできません。
同様に、Loggable を使用して以前のバージョンに戻すと、そのバージョンと現在の間の変更が失われます (意図したとおりですが、特定のエントリを削除できるようにしたい)。
Person からor (エントリの値とタイムスタンプを含む) などの「エントリオブジェクト」への古典的なOneToMany/ManyToOne関係で、最新のタイムスタンプを現在の値として取得するのが最善の方法でしょうか?PersonHeightEntry
PersonWeightEntry
例:
class Person
{
// @ORM\OneToMany(...)
private $weight_entries;
}
class PersonWeightEntry
{
private $value;
private $timestamp;
// @ORM\ManyToOne(...)
private $person;
}