2009-09-07 7 views
1

서로 다른 두 가지 측면에서 서로 조인 할 때 두 모델 간의 관계를 설정하는 방법에 대한 질문이 있습니다.CakePHP 합류 두 테이블 사이의 모델 두 번

내가있어 문제의 예를 들어주지

:

Users (id, name) 
Messages (id, message, from_user_id, to_user_id) 

(내 경우, 사용자도 메시지 아니지만,이 잘하면 간단한 방법으로 문제를 보여줍니다)을

사용자는 서로 메시지를 보낼 수 있으며 각 메시지에는 메시지를 보낸 사용자와 메시지를받을 사용자가 있습니다. 나는 모델 관계를 파악하기 위해 노력하고있어 :

class User extends AppModel { 
    var $hasMany = array("Message"); 
} 

class Message extends AppModel { 
    var $belongsTo = array("User"); 
} 

나는 또한 CakePHP를 제대로 관계를 선택할 수 있도록 필드가 데이터베이스에 이름을 지정해야하는 방법을 모르겠어요.

답변

5

나는 관계 옵션을 해결 할 수있었습니다 :

class Message extends AppModel { 
    var $belongsTo = array(
     "FromUser" => array(
       "className" => "User" 
      , "foreignKey" => "from_user_id" 
      , "type" => "INNER" 
     ), 
     "ToUser" => array(
       "className" => "User" 
      , "foreignKey" => "to_user_id" 
      , "type" => "INNER" 
     ) 
    ); 
} 

class User extends AppModel { 
    var $hasMany = array(
     "MessageFrom" => array(
       "className" => "Message" 
      , "foreignKey" => "from_user_id" 
     ), 
     "MessageTo" => array(
       "className" => "Message" 
      , "foreignKey" => "to_user_id" 
     ) 
    ); 
} 

This question and answer도 매우 도움이되었다!