sql >> データベース >  >> RDS >> Mysql

Yii2:生のクエリをActiveRecordに変換する

    作成したRawSqlクエリで、phpmyadminまたはその他のユーティリティを使用してテーブルで実行した場合に目的の結果が得られる場合は、次のように変換できます。

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

    他のテーブルを結合するために使用する外部キーがselectで指定されていることを確認してください。指定されていない場合、列が見つからない、または不明な列などのエラーが発生する可能性があります。



    1. PGD​​ay.IT2011の論文募集が延長されました

    2. 11パフォーマンスチューニングを改善するためのSQLServerインデックスのベストプラクティス

    3. mysqldumpがcronで機能していません

    4. 別のクラスのMySQLデータベース構成