2012-10-16 5 views
0

HABTM 자체 연결을 만들고 싶습니다. 즉, 사용자는 다른 사용자와 연관 될 수 있습니다. 문제는 다음과 같습니다. 한 사용자에서 다른 사용자로 연결을 저장할 수는 있지만 이러한 연결을 한 번만보고 편집 할 수 있습니다. 여기 내 협회는 다음과 같습니다.CakePHP : 자체 참조 HABTM 연관?

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

그래서 사용자 (누가 트레이너인지)에게 전화를 걸 때 나는 관련된 플레이어를 볼 수 있습니다. 땀 없습니다. 그러나 다른 쪽에서 협회를 보거나 편집하려고 할 때 (협회와 어떤 강사가 연관되어 있는지 확인하기 위해) 협회는 모든 사용자를 동일한 방식으로 다루고 있기 때문에 아무 것도 나타나지 않습니다. 즉, 강사와 연상 할 것을 기대합니다.

내 컨트롤러 (사용자 역할 기반)에서 on-the-fly 바인딩을 수행하는 것에 대해 생각했지만 해커처럼 보입니다.

모델에 새 필드를 추가하지 않고도 HABTM 자체 연관성을 유지할 수있는 깨끗한 방법이 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

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 
) 
); 
+0

다음과 같은 두 가지 문제가 있습니다. a) "강사"만 찾았지만 "파트너"는 반환되지 않으며 2) 양식을 통해 파트너를 추가하는 것이 작업. –