1

几周前刚开始接触 CakePHP。我对 MVC 框架有一些经验,但这个问题让我有点退缩。

我目前正在研究一个模型foo,其中包含一个主要 id 和一些属性。由于需要完整的更改历史记录,因此将foo的内容foo保存在表中foo_content。这两个表通过foo_content.foo_id = foo.id, 在 Cake 中以- 关系连接foo hasMany foo_content

要跟踪的版本foofoo_content还包含该列version,以及foo该字段本身currentVersion。版本是用户每次更新时加一的数字foo。顺便说一句,这是一个较旧的原生 PHP 应用程序,将在 Cake 之上重写。应用程序中 10 次中有 9 次,最新版本 ( foo.currentVersion) 是需要在前端表示的 db-entry。

我的问题很简单:有没有办法直接在模型中表示这个?还是这种逻辑只需要在控制器中定义?

非常感谢您的帮助!

4

1 回答 1

2

为了始终自动获取最新版本,您可以轻松地进行另一个关联:

public $hasOne = array(
    'CurrentContent' => array(
        …
        'condition' => array('FooContent.version' => 'Foo.currentVersion')
    )
)

那,或者您'order' => array('FooContent.version' => 'desc')在您的关系中添加一个子句hasMany并始终使用$foo['FooContent'][0].

对于自动创建存档版本,您可以使用beforeSave和/或afterSave回调。

于 2011-02-27T22:58:21.363 回答