public function searchDeleted($params) { $dataProvider = $this->search(); $dataProvider->query->where(['or', ['and', ['sender_id' => Yii::$app->user->id], ['sender_status' => Message::getDeletedStatuses()]], ['and', ['receiver_id' => Yii::$app->user->id], ['receiver_status' => Message::getDeletedStatuses()]]]); if (!($this->load($params) && $this->validate())) { $dataProvider->query->joinWith(['receiverUser' => function ($q) { $q->from(User::tableName() . ' pdu_receiver'); }, 'senderUser' => function ($q) { $q->from(User::tableName() . ' pdu_sender'); }]); return $dataProvider; } $dataProvider->query->andFilterWhere(['like', 'topic', $this->topic]); $dataProvider->query->joinWith(['receiverUser' => function ($q) { $q->from(User::tableName() . ' pdu_receiver')->where(['like', 'pdu_receiver.username', $this->receiverName]); }, 'senderUser' => function ($q) { $q->from(User::tableName() . ' pdu_sender')->where(['like', 'pdu_sender.username', $this->senderName]); }]); return $dataProvider; }