0

Cakeとその包含可能な動作を初めて使用しましたが、期待どおりに機能していません...またはまったく機能していません。

製品のアクセサリのリストを取得しようとしています。製品モデルHABTM製品(別名「ProductRelation」)。結合テーブルは、product_idとrelated_idの2つの製品IDを持つproducts_productsです。これに反して、特定のproduct_idのアクセサリ(related_id列から駆動される製品)のリストを取得したい

私の製品モデルでは、$ actsAs = array('Containable');を追加しました。

そして、私のコントローラーでは、クックブックからの参照を使用して封じ込め可能なものを簡単にテストしても、条件がなくても製品をまったく封じ込めることができません。

debug($this->Product->find('all', array('contain' => 'ProductRelation')));

..データベース内のすべての製品の配列を、関連するすべてのモデル(画像、コンテンツタブ、評価、レビュー、価格設定など)とともに返します。これに対して「条件」を適用しようとしたことはありません。これは、記述された呼び出しによってデータが制限されるためです。クックブックによると、製品とそのProductRelationデータ..。

任意のヒント?

4

1 に答える 1

2

再帰的になっているようです。以下を使用してみてください。

debug($this->Product->find('all', array(
    'contain' => 'ProductRelation',
    'recursive' => -1
)));

それがうまくいく場合は、クラスに追加containableし、プロパティをに設定する必要があります。これにより、要求した結果のみを取得できます。AppModelrecursive-1

注意:CakeはjoinHABTMには対応していないためProductRelation、どのような状況でも使用できません。

于 2012-12-07T14:30:52.703 に答える