0

CakePHP 内で HABTM 関連付けを使用して、同じモデルの複数のレコードを別のモデルの 1 つのレコードに結合しようとしています。

関連付けようとしているモデルは、User と Bet です。ユーザーモデルはかなり標準的ですが、難しいのはベットモデルです. ベット レコードには、特に ID と、user_1_id および user_2_id の列があります。各ベットには 2 人の参加者がいます。

最初は、bet テーブル内の同じレコードにこれら 2 つを格納することは問題ないと考えていました。ユーザー モデルに単純な hasMany 関連付けを使用し、2 つの外部キーがあるため、ファインダー クエリを使用します。

public $hasMany = array(
    'Bet' => array(
        'className' => 'Bet',
        'foreign_key' => false,
        'finderQuery' => 'SELECT *
                            FROM `bets` as `Bet`
                            WHERE `Bet`.`user_1_id` IN ({$__cakeID__$})
                            OR `Bet`.`user_2_id` IN ({$__cakeID__$})',
    ),

しかし、私が言ったように、私はいくつかの問題に遭遇し、関係が一方向にしか機能していないように見えました (つまり、個々の賭けで作業しているときにユーザーの詳細を表示できますが、ユーザーと作業しているときに賭けの詳細を関連付けることができません)。 .

したがって、結合テーブルを使用したHABTM関係が必要になると思いますが、同じモデルの複数のレコードと別のモデルの1つをリンクテーブル。

これは頭​​が痛いので、外部の視点やアドバイスは本当に役に立ちます、ありがとう!

4

1 に答える 1

0

私はこれを自分で修正することができました。私は自分の関連付けをすべて間違っていたようです。Cake Book でこれを見つけました: http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#multiple-relations-to-the-same-model

アプリの他の場所でまったく同じ関連付けを使用してフォロワーシステムを処理しているため、これを以前に認識できなかった理由はわかりません。重要なのは、ガイドで詳しく説明されているように、モデルのエイリアスを使用することです。

うまくいけば、これは将来誰かを助けるのに役立ちます!

于 2013-11-03T15:56:29.197 に答える