2012-10-11 145 views
0

我有一個mail_conversation和一個mail_conversation_member表。Yii has_many與兩個主鍵的關係

mail_conversation只有id作爲PRIMARY KEY

mail_conversation_member具有conversation_iduser_id作爲PRIMARY KEY s。

現在,我想列出一個會話及其所有成員,但它只返回一個成員。看起來我需要在HAS_MANY關係中添加第二個PRIMARY KEY

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

我得到的談話:

$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

這是因爲你的標準。如果您從with陣列中取出'message_member',則可以在您進行對話後延遲加載成員。您應該檢查Yii生成的SQL代碼,以確認該條件正在按照預期進行解釋。

另外,爲什麼不定義的成員類的關係:

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

然後你就可以通過,而不用您指定的標準拉交談,並通過拉會員的每個對話。