Iは、単一の「カテゴリ」テーブルを使用して、テーブル内の他のカテゴリを参照するparent_id
フィールドを有するのファンです。
これにより、スレッド化されたカテゴリをすべて1つのテーブルにまとめることができます。「カテゴリグループ」は、parent_idフィールドにデータを持たないカテゴリ行です。
例データは
id name parent_id category_count
1 appliances null 1
2 dogs null 1
3 couch 1 0
4 pitbull 2 0
5 games null 0
//...
基本的には、 'カテゴリー' はそれ自体に関連している - こちらのモデル団体です: (参照:CakePHP bookで3rd code example here)
class Category extends AppModel {
public $belongsTo = array(
'Parent' => array(
'className' => 'Category',
'foreignKey' => 'parent_id',
'counterCache' => true
)
);
public $hasMany = array(
'Children' => array(
'className' => 'Category',
'foreignKey' => 'parent_id'
)
);
//...
}
class Item extends AppModel {
public $belongsTo = array('Category');
//...
}
またItem hasAndBelongsToMany Category
を行うことができますbelongsTo
の代わりに、あなたの設定によります。
追加情報:
CounterCache:CakePHPのcounterCache、go hereの詳細については。
検索 - >スレッド:このメソッドを使用して、あなたは簡単経由して、ネストされたデータを取得することができますCakePHPの検索 - >スレッド(click here for more info about this)
私はカテゴリグループを処理するための第4テーブルを追加したこと@Sevakいただきありがとうございます。 (FK)と(PK)btwとは何ですか? – MotoX
PK =主キー。 FK =外部キー(=参照先テーブルの主キー)。 – dgw
yeah @dgwは正しいです... –