0

とテーブルがmail_conversationありmail_conversation_memberます。

mail_conversationidとしてのみ持っていPRIMARY KEYます。

mail_conversation_memberconversation_idおよびuser_idas PRIMARY KEYsを持っています。

ここで、会話とそのすべてのメンバーを一覧表示したいのですが、1 つのメンバーしか返されません。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);
4

1 に答える 1

0

これはあなたが持っている基準のためです。配列から「message_member」を取り出すとwith、会話ができたらメンバーを遅延ロードできます。Yii が生成している SQL コードをチェックして、基準が期待どおりに解釈されていることを確認する必要があります。

さらに、メンバー クラスでリレーションシップを定義してみませんか。

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

次に、指定した条件なしで会話をプルし、各会話でメンバーをプルすることができます。

于 2012-10-11T03:43:33.270 に答える