几周前刚刚开始进入CakePHP。我对MVC框架有一些经验,但是这个问题让我有所了解。
我目前正在开发一个模型foo
,其中包含主要ID和一些属性。由于需要foo
更改的完整历史记录,因此foo
的内容会保存在表格foo_content
中。这两个表通过foo_content.foo_id = foo.id
连接,在Cake中与foo hasMany foo_content
- 关系。
要跟踪foo
的版本,foo_content
还包含列version
,foo
本身包含字段currentVersion
。每次用户更新foo
时,版本都会增加一个数字。这是一个较旧的本机PHP-app顺便说一句,要在Cake上重写。在应用程序中,10次中有9次,最新版本(foo.currentVersion
)是需要在前端表示的数据库条目。
我的问题很简单:是否有人直接在模型中表示这一点?或者这种逻辑是否只需要在控制器中定义?
非常感谢你的帮助!
答案 0 :(得分:2)
要始终自动获取最新版本,您可以轻松地建立另一种关联:
public $hasOne = array(
'CurrentContent' => array(
…
'condition' => array('FooContent.version' => 'Foo.currentVersion')
)
)
那,或者您为'order' => array('FooContent.version' => 'desc')
关系添加hasMany
条款,并始终使用$foo['FooContent'][0]
。
要自动创建归档版本,您可以使用beforeSave
和/或afterSave
回调。