CakePHP のリレーションシップを通じて、双方向の自己参照 hasMany に頭を悩ませようとしています (なんて口が悪い!)。
私は画像マッチングのウェブサイトに取り組んでいます。
- 画像は、「一致」(結合モデル) を介して他の画像に関連付けられます。
- 各試合には 2 つの写真があり、現在の評価と総投票数が保存されます。
- 画像を表示する場合、関連するすべての画像がいずれかの方向から (一致を介して) 利用できる必要があります。
結合モデルとの関係を通じて hasMany を定義することから始めました。
pictures_matches 結合テーブルの構造は次のとおりです。
id | picture_id | partner_id | rating | total_votes
私の一致結合モデルの関連付けは次のようになります。
class PictureMatch extends AppModel {
...
public $belongsTo = array(
'Picture' => array(
'className' => 'Picture',
'foreignKey' => 'picture_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Partner' => array(
'className' => 'Picture',
'foreignKey' => 'partner_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
各写真は、どちらの方向からでも関連する写真にアクセスできる必要がありますが、これは私の把握が滑っているところです。関係の両側を保存する必要があるように見えますが、これにより、結合モデルに保存されている余分なデータが破棄されます.2 つのデータベース エントリがあると、方向によって投票が異なる可能性があります。
CakePHP でこれを行うための最良の方法を誰かが明らかにすることはできますか? 私はかなり混乱しています。
その場で逆の関係を作成することは可能ですか?