Nếu truy vấn RawSql bạn đã viết mang lại cho bạn kết quả mong muốn nếu được chạy trên bảng bằng phpmyadmin hoặc bất kỳ tiện ích nào khác, bạn có thể biến đổi nó thành như sau.
$subQuery = Adanalytics::find()
->select([new Expression('[[id]], [[ad_id]], MAX([[impression]]) as impression, max([[view]]) as view, max([[clicks]]) as clicks,[[visitor_ip]],[[publisher_id]]')])
->where(['publisher_id' => Yii::$app->user->identity->id ])->
->groupBy('[[id]], [[visitor_ip]]');
$query = Adanalytics::find()
->select([new \yii\db\Expression('t.[[date_event]], t.[[id]], t.[[ad_id]], sum(t.[[impression]]) as total_impression, sum(t.[[view]])
as total_views, sum(t.[[clicks]]) as total_clicks, t.[[publisher_id]], i.[[budget]],i.[[name_of_campaign]]')])
->from(['t' => $subQuery])
->innerJoin('{{%inventory}} i', 'i.id=t.ad_id')
->groupBy('t.ad_id, t.date_event');
$query->all()
Chỉ cần đảm bảo rằng các khóa ngoại mà bạn sử dụng để nối các bảng khác phải được chỉ định trong vùng chọn, nếu không, nó có thể mang lại cho bạn lỗi như không tìm thấy cột / hoặc cột không xác định.