/** * @inheritdoc */ public function getDialogMessages(Message $dialog, $offset = null) { $subQuery = new Query(); $messages = Message::find()->selectDate()->from("(" . $subQuery->select('*')->from('message')->where('({{message}}.from = :fid OR {{message}}.to = :fid) AND ({{message}}.from = :tid OR {{message}}.to = :tid)')->params([':fid' => $dialog->from, ':tid' => $dialog->to])->orderBy(['id' => SORT_DESC, 'created_at' => SORT_ASC])->offset($offset)->limit($this->limit)->createCommand()->getRawSql() . ") as m")->with(['sender', 'recipient', 'photos'])->orderBy('m.id')->all(); return ArrayHelper::mapByColumn($messages, 'date'); }