2011-02-27 11 views
1

数週間前からCakePHPに入ったばかりです。私はMVCフレームワークでいくつかの経験を持っていますが、この問題は私を少し後にしています。CakePHPでオブジェクトのバージョンを表現する

現在、fooというモデルで作業しており、プライマリIDと一部の属性が含まれています。 fooの変更の完全な履歴が必要なため、fooの内容はテーブルfoo_contentに保存されます。 2つのテーブルはfoo_content.foo_id = foo.id、ケーキはfoo hasMany foo_content-関連で接続されています。 foofoo_contentのバージョンを追跡するために

もカラムversion、そしてfoo自体フィールドcurrentVersionを含有します。バージョンは、ユーザーがfooを更新するたびに1ずつ増加する数字です。これは古いネイティブのPHP-appのbtwで、Cakeの上に書き直されています。アプリで10回のうち9回、最新のバージョン(foo.currentVersion)がフロントエンドで表現する必要のあるdbエントリです。

私の質問は簡単です:モデル内にこれを直接表現する方法がありますか?あるいは、この種のロジックをコントローラに定義するだけでいいですか?

ご協力いただきありがとうございます。常に自動的に最新のバージョンを取得するための

答えて

2

、あなたは簡単に別の関連付けにすることができます。

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

あなたhasMany関係に'order' => array('FooContent.version' => 'desc')句を追加し、常に$foo['FooContent'][0]で動作する、またはを。

アーカイブ済みのバージョンを自動的に作成するには、beforeSaveおよび/またはafterSaveコールバックを使用できます。

関連する問題