0

HABTM 自己関連付けを作成したい。つまり、ユーザーを他のユーザーに関連付けることができます。問題は次のとおりです。あるユーザーから別のユーザーへの関連付けを保存できますが、それらの関連付けは一方向でしか表示および編集できません。ここに私の協会があります:

'Partner' => array(
    'className' => 'User',
    'joinTable' => 'players_trainers',
    'associationForeignKey' => 'player_id',
    'foreignKey' => 'trainer_id', 
    'unique' => true
)

そのため、ユーザー (トレーナー) を呼び出すと、そのユーザーに関連付けられているプレーヤーを確認できます。汗かいていない。しかし、反対側から関連付けを表示/編集しようとすると (プレーヤーが関連付けられているトレーナーを確認するために)、何も表示されません。これは、関連付けがすべてのユーザーを同じように扱っているためです。つまり、トレーナーからプレーヤーへの関連付けを期待しています。

コントローラーで(ユーザーの役割に基づいて)オンザフライでバインディングを行うことを考えましたが、それはハックのようです。

モデルに新しいフィールドを追加することなく、HABTM 自己関連付けを行うクリーンな方法はありますか? 私は何を間違っていますか?

4

1 に答える 1

0

他の関連付けを設定してみてください。

var $hasAndBelongsToMany = array(
 'Partner' => array(
    'className' => 'User',
    'joinTable' => 'players_trainers',
    'associationForeignKey' => 'player_id',
    'foreignKey' => 'trainer_id', 
    'unique' => true
  ),
  'Trainer' => array(
    'className' => 'User',
    'joinTable' => 'players_trainers',
    'associatedForeignKey' => 'trainer_id',
    'foreignKey' => 'player_id',
    'unique' => true
  )
);
于 2012-10-17T01:15:18.243 に答える