2011-02-06 2 views
1

간단한 응용 프로그램에 몇 가지 연구를 통해 친구 기능을 추가해야하는데 사용자 테이블에 다시 연결되는 조인 테이블이 필요합니까? 이런 일이 :CakePHP에 친구 찾기 기능 추가

사용자 - 우정 - 사용자

(I 이미 사용자 테이블이)

사람이에 대한 자세한 내용을 주실 수 있습니까?

답변

3

우정 테이블은 다음과 같은 열이 있어야합니다

id Integer 
user_from (the user who requested friendship) 
user_to (the user who accepted friendship) 
created (optional to track when your friendship started) 

는 그런 다음 적절한 모델 관계를 만들어야합니다.

class User extends AppModel { 
    ... 
    var $hasMany = array(
     'UserFrom'=>array(
     'className'=>'Friendship', 
     'foreignKey'=>'user_from' 
    ), 
     'UserTo'=>array(
     'className'=>'Friendship', 
     'foreignKey'=>'user_to' 
    ) 
    ); 
    var $hasAndBelongsToMany = array(
     'Friendship' => array(
      'className' => 'User', 
      'joinTable' => 'friendships', 
      'foreignKey' => 'user_from', 
      'associationForeignKey' => 'user_to' 
    ); 
    ... 
} 

class Friendship extends AppModel { 
    ... 
    var $belongsTo = array(
     'UserFrom'=>array(
     'className'=>'User', 
     'foreignKey'=>'user_from' 
    ), 
     'UserTo'=>array(
     'className'=>'User', 
     'foreignKey'=>'user_to' 
    ) 
    ) 
    ... 
} 

이렇게하면 각 모델에 2 개의 관계가 정의됩니다. HABTM 관계도 추가 할 수 있습니다. 컨트롤러와 뷰를 빌드하기 위해 bake 스크립트를 실행하십시오. 그런 다음 코드에서 다음과 같이 사용할 수 있습니다.

$this->User->UserFrom->find('all', 
    array(
     'conditions'=>array('user_from'=>1), 
     'contain'=>array('UserTo') 
    ) 
); 

ID 1 인 사용자 및 모든 친구 세부 정보를 반환해야합니다.

재귀 쿼리에주의하십시오. :)

+0

그래, 많이 좋아 보인다. 지금 시도해보기. 고마워. – woel

+0

HABTM 관계에 대한 안녕하세요 닉, HABTM을 사용해야합니까? 그렇다면 위에서 쓴 모델 관계에 어떤 영향을 미칠까요? 나는 아직도 약간 혼란 스럽다. 그리고 빵 굽기를 위해, 나는 우정을 굽고있을거야? 위에 쓴 마지막 코드를 어디에서 알아야합니까? 덕분에 .. – woel

+0

내가 관계 모델에서 joinTable을 사용해서는 안되나요? – woel