2012-10-11 1 views
0

나는 mail_conversationmail_conversation_member 테이블을 가지고 있습니다.Yii has_many 두 개의 primary_keys와의 관계

mail_conversationPRIMARY KEY으로 id입니다.

mail_conversation_memberconversation_iduser_idPRIMARY KEYs이다.

이제는 대화 및 모든 구성원을 나열하려고하지만 하나의 구성원 만 반환합니다. HAS_MANY 관계에 두 번째 PRIMARY KEY을 추가해야하는 것 같습니다. 이 때문에 당신이 가지고있는 기준이다

$criteria = new CDbCriteria(); 
     $criteria->condition = "message_member.user_id = " . Yii::app()->user->id; 
     $criteria->order = 'messages.date_created DESC'; 

     $mail_conversations = MailConversation::model()->with(array('message_member', 'messages'))->findAll($criteria); 

답변

0

:

'message_member' => array(self::HAS_MANY, 'MailConversationMember', 'conversation_id') 

나는 함께 대화를 얻을. with 배열에서 'message_member'를 가져 가면 대화를 한 후에는 멤버를 게으르게로드 할 수 있습니다. Yii가 생성하는 SQL 코드를 확인하여 조건이 예상대로 해석되는지 확인해야합니다.

는 또한, 왜 멤버 클래스의 관계를 정의하지 :

'conversations' => array(self::HAS_MANY, 'MailConversationMember', 'user_id',array(
    'order' => 'messages.date_created DESC', 
), 

그런 다음 당신은 당신이 지정한 그 기준이없는 통해 대화를 당겨하고, 각 대화에 구성원을 이겨낼 수 있습니다.