2011-02-27 67 views
1

幾周前剛剛開始進入CakePHP。我有一些MVC框架的經驗,但這個問題讓我反思了一下。用CakePHP表示對象的版本

我目前正在模型foo,包含一個主要的id和一些屬性。由於foo需要更改的完整歷史記錄,因此foo的內容保存在表foo_content中。兩張桌子通過foo_content.foo_id = foo.id連接,在Cake中與foo hasMany foo_content-關係連接。

跟蹤foo版本,foo_content還包含列version,並foo自身領域currentVersion。每當用戶更新foo時,版本號會加1。這是一箇舊的原生PHP應用程序順便說一句,要重寫在Cake之上。在應用程序中10次中有9次,最新版本(foo.currentVersion)是需要在前端表示的db-entry。

我的問題很簡單:有沒有在模型中直接表示這種情況?還是這種邏輯只需要在控制器中定義?

非常感謝您的幫助!

回答

2

對於總是自動獲取最新版本,您可以輕鬆地相互關聯起來:

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

也就是說,或者你添加一個'order' => array('FooContent.version' => 'desc')子句您hasMany關係,並始終與$foo['FooContent'][0]工作。

對於自動創建存檔版本,您可以使用beforeSave和/或afterSave回調。