sql >> Database teknologi >  >> RDS >> Mysql

Yii2:Konvertering af en rå forespørgsel til ActiveRecord

Hvis RawSql-forespørgslen, du skrev, giver dig de ønskede resultater, hvis den køres på bordet ved hjælp af phpmyadmin eller et andet værktøj, kan du transformere det til følgende.

$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()

Bare sørg for, at de fremmednøgler, som du bruger til at slutte sig til de andre tabeller, skal angives i select, ellers kan det give dig en fejl som kolonne ikke fundet / eller ukendt kolonne.



  1. Sådan sikkerhedskopieres og gendannes (eksportere og importere) MySQL-databaser Tutorial

  2. Konvertering af en eksisterende MyISAM-database til InnoDB med Django

  3. Sådan indsætter du et linjeskift i en SQL Server VARCHAR/NVARCHAR streng

  4. Der vises ikke noget, efter jeg har indlæst siden