Yii has_many与两个primary_keys的关系



我有一个mail_conversation和一个mail_conversation_member表。

mail_conversation只有id作为PRIMARY KEY.

mail_conversation_member conversation_iduser_id一样PRIMARY KEY

现在,我想列出一个对话及其所有成员,但它只返回一个成员。看来我需要在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);

这是因为您拥有的标准。如果将"message_member"从with数组中取出,则可以在进行对话后延迟加载成员。你应该检查 Yii 生成的 SQL 代码,以确认条件是否按预期被解释。

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

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

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

相关内容

  • 没有找到相关文章

最新更新