我觉得这里可能会遗漏一些东西,但无论如何我都会去。
考虑一下:我有一个'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()来解决这个问题,但我真的不想这样做,因为我不想在保存时再次运行所有保存挂钩。
有没有更好的方法解决这个问题?
答案 0 :(得分:0)
这里没有什么可以解决的。 Versionable
行为是记录的designed to store previous values。
如果你想存储对象的每个临时状态 - 你每次都必须save
。