的单一属性可以说,我与名为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;
}