1

数週間前から CakePHP を始めたばかりです。私は MVC フレームワークの経験がありますが、この問題が少し足を引っ張っています。

私は現在foo、プライマリ ID といくつかの属性を含むモデルに取り組んでいます。の変更の完全な履歴fooが必要なため、 の内容はfooテーブル に保存されますfoo_content。2 つのテーブルはfoo_content.foo_id = foo.id、Cake の関係で を介して接続されfoo hasMany foo_contentます。

のバージョンを追跡するためにfoo、 にfoo_contentも列が含まれておりversionfooそれ自体にフィールドが含まれていますcurrentVersion。バージョンは、ユーザーが更新するたびに 1 ずつ増加する番号fooです。これは古いネイティブ PHP アプリで、Cake の上に書き直されます。アプリの 10 回中 9 回、最新バージョン ( foo.currentVersion) は、フロントエンドで表す必要がある db エントリです。

私の質問は単純です:これをモデルで直接表現する方法はありますか? それとも、この種のロジックは単にコントローラーで定義する必要があるのでしょうか?

あなたの助けに最も感謝します!

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 に答える