Yii与两个primary_keys有很多关系

时间:2012-10-11 02:32:54

标签: php yii has-many composite-primary-key

我有一个mail_conversation和一个mail_conversation_member表。

mail_conversationid作为PRIMARY KEY

mail_conversation_memberconversation_iduser_idPRIMARY KEY s。

现在,我想列出一个会话及其所有成员,但它只返回一个成员。我似乎需要在PRIMARY KEY关系中添加第二个HAS_MANY

 '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);

1 个答案:

答案 0 :(得分:0)

这是因为你有标准。如果从with数组中取出“message_member”,则一旦进行了对话,就可以延迟加载成员。您应该检查Yii正在生成的SQL代码,以确认标准是按预期解释的。

此外,为什么不在成员类中定义关系:

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

然后,您可以在没有指定条件的情况下完成对话,并在每次对话中拉出成员。