0

このCakePHPモデル/コントローラーの開発に苦労しています。

製品モデルがあります。モデルには多くの価格設定、画像、ビデオ、コンテンツタブなどがあります。

モデルはまた、他の製品と多くの関係を持っている必要があります。-例:アクセサリ、キット、サブ製品(親のバリアントモデル)

そこで、products_productsテーブルを作成しました。このテーブルには、product_idとrelated_id(関連するアクセサリ/キットまたはサブ製品のID)とリレーションシップタイプがあります。

テーブルは次のようになります:id、product_id、related_id、type、sort ...

私の課題はこれです-メイン製品をロードするときに、関連する製品の関連するすべてのモデルデータを取得したいので、関連するモデルをそれ自体の製品(それがそうである)のように扱い、関連するすべてのモデルをロードしますデータ

HABTM関係を使用すると、関連するテーブルからデータを簡単に読み込むことができますが、製品が関連していることを知っているだけでは、製品モデルのデータ(価格、ビデオ、画像、プロモーションなど)はわかりません。

では、このモデルを開発してロードするための最良の方法は何ですか?標準の関連付けられたモデルの関係でそれを行うことができますか、またはサブクエリを使用して関連するproducts_productsテーブルからの製品IDのリストを使用して、関連するアイテムに到達するためにメインの製品モデルを使用する必要がありますか(これは非常に非ケーキのようです)

?経験豊富なケーキ屋さんからのご意見をいただければ幸いです。

前もって感謝します。

4

1 に答える 1

0

自己関連付けを使用することで、多くの頭痛の種を減らすことができます。

基本的に、Productモデルにparent_idフィールドを作成する必要があります。アクセサリなどを含む製品では、parent_idフィールドにメイン製品のIDが含まれます。これにより、find('threaded')を呼び出すだけで、データベースから製品を簡単に取り出すことができます。

そこから、製品に関するビデオ/画像データを保持するテーブルのhasManyリレーションシップを簡単に設定できます。

于 2013-01-22T21:37:34.907 に答える