2006年09月01日

Single Table Inheritance を CakePHP で実現するには

CakePHP で 単一テーブル継承(Single Table Inheritance)を実現する方法(力技?)

無料会員と有料会員の違いのように、"似たような"データがある場合にどうやってそれを整理してゆくか。

Rails では単一テーブル継承をサポートしていて考え方としては、データテーブルは一つで、そこにいくつかの種類のモデルクラスがくっついてゆくようなイメージ。

事例:http://www.interq.or.jp/engineer/ishikura/sb/log/eid46.html
など。

例えば、Digg というサイトでは、ほぼ同じ内容のニュース項目が、“発表された”表ページと、“まだ日の目を見ていない補欠ニュース”の裏ページに分類されている。評価が高くなると表ページに移動する。

クラスを一つにして、パラメータを切り替えるというアイデアも悪くはないが、

$発表されたニュース->findAll();
$未発表ニュース->findall();

と書きたい、というアイデアもある。これをやりすぎるとどんどん複雑になってゆくので適当なところでやめたほうがよいと思うが、"CakePHPでもこれができる"ようだ、ということを知っておくのはよいと思う。


Single Table Inheritance の効用書き。

CakePHP で実現する方法。

フレームワークで想定している書き方ではないように思うので、スマートな解決方法ではないと思いますが、知識としては知っておいてよいと思います。CakePHP 2.0 ではこのあたり、どうなるんでしょうか……。





posted by SDozono at 12:18| ロサンゼルス 🌁| Comment(0) | TrackBack(1) | CakePHP Model | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

Railsで単一テーブル継承(Single Table Inheritance)
Excerpt: ActiveRecord以外のORマッパーはどうなのかよく知らないのですが、Rails(というかActiveRecord)では、DB上の一つのテーブルを複数のモデルで共有する「単一テーブル継承(Sin..
Weblog: 京の路
Tracked: 2006-10-09 02:47
手(パー)To make a comment: Please type your name and comment. at the validation field box, type 'cakephp'. And there two glay buttons. "Preview"/"Submit". Thank you!