Doctrine 1.2:具有过期调用者的事件会导致版本化行为出现问题

时间:2011-07-20 10:55:04

标签: php doctrine doctrine-1.2

我觉得这里可能会遗漏一些东西,但无论如何我都会去。

考虑一下:我有一个'Booking'类,它有一个user_id字段和Versionable行为,我运行以下代码:

$booking = new Booking();

$booking->user_id = 1;

$booking->isValid();

$booking->user_id = 2;

$booking->save();

这会导致将正确的记录插入“预订”表中。但是插入'booking_version'表的记录已经过时了! user_id设置为1,因为数据是从第一次isValid()调用期间创建的事件调用程序中提取的。此外,出于同样的原因,id字段设置为0(这意味着版本记录无法链接回预订)

我可以通过在save()之前调用$ booking-> clearInvokedSaveHooks()来解决这个问题,但我真的不想这样做,因为我不想在保存时再次运行所有保存挂钩。

有没有更好的方法解决这个问题?

1 个答案:

答案 0 :(得分:0)

这里没有什么可以解决的。 Versionable行为是记录的designed to store previous values

如果你想存储对象的每个临时状态 - 你每次都必须save