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 | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。