使用CakePHP表示对象的版本

时间:2011-02-27 22:24:33

标签: php cakephp cakephp-appmodel

几周前刚刚开始进入CakePHP。我对MVC框架有一些经验,但是这个问题让我有所了解。

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

要跟踪foo的版本,foo_content还包含列versionfoo本身包含字段currentVersion。每次用户更新foo时,版本都会增加一个数字。这是一个较旧的本机PHP-app顺便说一句,要在Cake上重写。在应用程序中,10次中有9次,最新版本(foo.currentVersion)是需要在前端表示的数据库条目。

我的问题很简单:是否有人直接在模型中表示这一点?或者这种逻辑是否只需要在控制器中定义?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:2)

要始终自动获取最新版本,您可以轻松地建立另一种关联:

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

那,或者您为'order' => array('FooContent.version' => 'desc')关系添加hasMany条款,并始终使用$foo['FooContent'][0]

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