2017-10-27 7 views
0

私は、会話リストに同じ送信者の会話を保持している同じ送信者の新しい行/セルを継続的に追加するメッセージセンターをWebサイトに持っています。つまり、会話リストの同じ送信者から4つのメッセージを受信すると、メッセージを受信したのと同じ送信者の4行/セルになります。しかし、送信者が何回書き込んでも、同じ送信者の会話リストには1行/セルが必要です。会話リストの同じ送信者に1つの行/セルを取得する

以下は、メッセージコントローラの関連コードです。

// get recent messages to show in left column 

$recent = Message::find() 
       ->with('sentFrom') 
       ->where(['sent_to' => Yii::$app->user->identity->id]) 
       ->andfilterWhere([ 
            'or', 
            ['like', 'subject', $search_subject], 
            ['like', 'sent_from', $search_sender], 
       ]) 
       ->orderBy('created_at DESC') 
       ->limit(Yii::$app->params['message_chat']['recent_limit']) 
       ->all(); 

答えて

0

私はあなたがGROUPBY声明(このようなもの)を使用しようとすることができると思う::

$recent = Message::find() 
    ->with('sentFrom') 
    ->where(['sent_to' => Yii::$app->user->identity->id]) 
    ->andfilterWhere([ 
     'or', 
     ['like', 'subject', $search_subject], 
     ['like', 'sent_from', $search_sender], 
    ]) 
    ->orderBy('created_at DESC') 
    ->limit(Yii::$app->params['message_chat']['recent_limit']) 
    ->groupBy(['sentFrom.id']) 
    ->all(); 
+0

b.tokmanは、私はそれを感謝し、あなたの答えのためにどうもありがとうございました。私はあなたが示唆したように試みたが、それは "データベースの例外"を示した、私は理由を知らない。ちょうどメモ、私のウェブサイトはYii2 farameworにあります。 –

+0

私はgroup byステートメントの問題を['sentFrom.id']と思う - sentFrom関係からsentFromを右のテーブル名に変更し、idをテーブルの主キーに変更します。結果は[your_realated_table_name.primary_key]のようなものになります –

関連する問題