在doSelect中捕获Propel对象的初始副本

时间:2011-10-09 23:09:37

标签: php select propel

我使用的是Propel 1.6,需要对特定数据库中的所有表进行版本控制。我有许多表,每个表都在模式中定义了一个可版本化的表(因此表'role'有一个表'role_versionable'作为其版本控制对应物)。在“角色”中保存记录时,我想在执行保存之前将现有记录复制到role_versionable。

这本身就是微不足道的:我已经将整个模式的baseClass设置为自定义类(扩展了BaseObject),并且我生成的所有行模型类都扩展了这个类。在我的自定义保存例程中,我正在进行全新选择,然后将其保存到可版本化的表中。但是我应该能够在所有行类中拦截doSelect [One],但我不想为模型中的每个表生成子对象。

因此我想知道是否有一种方法可以挂钩到postSelect或者在每次doSelect后自动调用,以便在选择后抓取对象的初始状态?当我来对行进行版本化时,这将为我节省额外的选择。

(详细信息:我是以自定义方式执行此操作,因为我需要向版本表添加额外的元数据,我不相信archive_behaviour支持。)

1 个答案:

答案 0 :(得分:1)

AFAIK在调用doSelect之前或之后无法使用挂钩。你最好的机会是在你自己的类中重写这个方法并自己添加一个钩子。我可能会写自己的Peer构建器来做到这一点。

威廉