的單一屬性可以說,我與名爲Person實體合作。人有屬性,如身高,體重等...可隨時間變化。版本/跟蹤實體
class Person
{
private $id;
private $weight;
private $height;
// etc...
}
我希望用戶能夠返回並查看某種形式的圖表隨時間的變化。爲每個獨立屬性存儲每個連續更改的最佳方式是什麼?
我已經看過DoctrineExtension Loggable接口,但是它會爲整個對象創建一個更改條目,因此您不能通過與已更改的對象無關的特定屬性向後瀏覽。
同時,回覆到以前的版本有可記錄的會導致你所說的版本與電流之間失去任何改變(如預期,但我希望能夠刪除特定的條目)。
會最好的方法是一個經典一對多/多對一從Person關係到「輸入對象」,如PersonHeightEntry
或PersonWeightEntry
(其包含值和有關條目的時間戳),拉動最當前的時間戳作爲當前值?
實施例:
class Person
{
// @ORM\OneToMany(...)
private $weight_entries;
}
class PersonWeightEntry
{
private $value;
private $timestamp;
// @ORM\ManyToOne(...)
private $person;
}