1

我想审计跟踪对数据对象所做的所有更改。假设我有事件数据对象,我想知道谁更改了它,何时更改,更改了什么等(类似于页面)。Silverstripe 网站建议使用 Verioned,但我找不到任何实施示例。它说最好的例子是Pages,它已经实现了Versioned。基本规则是在你的装饰器上定义一个 augmentDatabase() 方法。因此,我想将 DataExtention 用于数据对象(扩展),然后将扩展的用于我的 Event 数据对象。但是有什么简单的例子吗?

4

2 回答 2

3

假设您要管理和监视事件 DataObject 的多个版本,您只需声明要使用 thatDataObject 的版本化扩展

Class Event extends DataObject{
    static $extensions = array(
    "Versioned('Stage', 'Live')"
);
    ...
}

然后运行 ​​dev/build 现在应该有一个 Event、Event_Live 和 Event_versions 表。然后,您可以查看 Versioned.php 中可用的方法,并将它们与 Event 一起使用,即 publish()。这应该让你开始。

于 2013-02-21T00:49:49.093 回答
2

"Versioning in SilverStripe is handled through the Versioned class. It's a DataExtension, which allow it to be applied to any DataObject subclass."

"Similarly, any subclass you create on top of a versioned base will trigger the creation of additional tables, which are automatically joined as required."

Here is link to read further with examples Versioning of Database Content

于 2013-02-21T01:06:48.720 回答