0

私は午後中ずっと私を悩ませてきた質問があります:

ギターのギアサイトを作っているので、ギアアイテムテーブル、ユーザーテーブル、ギアツーユーザーブリッジテーブルを使用しています。つまり、ユーザーは複数のアイテムを所有でき、アイテムは複数のユーザーに属することができます。だからHABTM

アイテムはブランド(Fender-Stratocasterなど)に属しているため、アイテムモデルにbelongsToリレーションシップを設定し、ブランドモデルにHasManyリレーションシップを設定しました。アイテムコントローラーで出力を確認すると、ギアとそれに関連するブランドのデータがすべてそこにあります。

ユーザーコントロールパネル(および同様の領域)には、基本的にユーザーが所有するすべてのアイテムが一覧表示されます。ユーザーとアイテムの間にHABTM関係を設定した後、コントローラーの出力を確認しました。アイテムの情報とブリッジテーブルの情報はすべて表示されましたが、アイテムに関連付けられたブランド情報は表示されませんでした。結果は基本的に、「where user_id = x」であるかのように、ブランド情報を含むアイテムのリストである必要があります。代わりに、アイテム情報を取得しているだけで、その関係は取得していないようです。

私が見逃しているものや愚かな間違いはありますか?ありがとう。

4

2 に答える 2

2

ユーザーでrecursive実行するときに、属性の設定/変更を検討しましたか? 高く設定するほど、より深い関連性が検出されます。find()
recursive

Containable別の方法として、User の動作を使用することもできます。

$this->User->find('first',array(
    'conditions'=>array('User.id'=>1),  
    'contain' => array('Item'=>array('Brand'))
));
于 2012-05-08T20:46:49.403 に答える
1

再帰レベルを設定するか、ContainableBehavior を使用できます

于 2012-05-08T20:43:58.830 に答える