3

CakePHP でクラス テーブル継承モデルを作成したいと考えています。

upc、価格など、すべての製品が持つべきすべての基本情報を保持するためProductBaseに、テーブルのようなものと呼ばれるモデルが必要です。product_bases

次に、特定の製品タイプ モデルにそれを拡張させます。たとえば、ring_size、center_stone などの特定のリング情報を保持ProductRingするテーブルを使用します。product_rings

次に、ProductBase モデルから直接データを取得する場合は、すべてのタイプを取得します。

// pull all product types
$this->ProductBase->find('all'); 

または、特定のタイプのみを検索します。

// pull only Rings or descendants of the Ring type.
$this->ProductRing->find('all'); 

CakePHP でこのようなことは可能ですか? そうでない場合、代わりに何をすべきですか?

このようなことを行う適切なケーキの方法は何ですか?

4

2 に答える 2

1

ARC関係(または少なくともそのバリエーション)について言及しています。Cake は、これらのタイプの関係をその場で処理しません。つまり、これを処理するには独自のロジックを実装する必要があります。

もう 1 つのオプションは、製品を分類することです。製品が複数のカテゴリに当てはまる場合は、製品ごとに HABTM カテゴリが必要になります。それ以外の場合は、カテゴリ列を使用できます。あなたが探している HABTM になると思います。

  • PRODUCTS: 商品を載せるテーブル。
  • CATEGORIES:特定の製品が属することができるカテゴリのリスト。
  • CATEGORIES_PRODUCTS:各製品とそのさまざまなカテゴリ間のリンク。
  • TYPE:商品のタイプを定義するフラグです (リング、靴、パンツなど)。

次に、すべての製品が必要な場合は、products テーブルにクエリを実行します。製品のスライス (リングなど) が必要な場合は、リング カテゴリに属する​​すべての製品を選択します。

ここで、製品に関する情報に対処する必要があります。たとえば、すべての情報がすべての製品に当てはまるわけではありません。これを行うにはいくつかの方法があります。

  1. 製品情報を保持する複数のテーブルを作成できます。特定のタイプの製品を取得するときは、その関連情報をテーブルから取得します。
  2. 情報をシリアル化されたデータとしてテキスト フィールドに格納します。すべての情報は設定変数で定義でき、シリアル化されたデータを使用して情報にマップできます。

これが役立つことを願っています。ハッピーコーディング!

于 2011-04-29T14:58:36.693 に答える