我有一个mail_conversation
和一个mail_conversation_member
表。
mail_conversation
只有id
作为PRIMARY KEY
.
mail_conversation_member
conversation_id
和user_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',
),
然后,您可以在没有指定条件的情况下拉动对话,并在每个对话中拉动成员。