2017-11-16 1 views
-1

zu schreiben, wie ein Fund() mit Rollup schreiben:Wie eine Abfrage in yii2 für mit Rollup

$leadsCount = Approval::find() 
       ->select(['COUNT(id) AS cnt, coalesce(status, "total")']) 
       ->groupBy(['status']) 
       ->with(rollup) 
       ->all(); 

Während die Abfrage läuft am
ein Fehler immer wie folgt aus: Die Verwendung von undefinierte Konstante Rollup - angenommen 'Rollup'

+0

Sie haben gerade einen Aufruf von 'find()' mit 'rollup' gepostet. Was ist deine Frage? Treten beim Ausführen des Codes Fehler auf? Wenn Sie das tun, was ist die Fehlermeldung? – sjaustirni

+0

erhalten einen Fehler wie folgt: Verwendung von undefined Constant Rollup - angenommen 'Rollup' –

+0

Nun, fügen Sie es zur Frage dann. – sjaustirni

Antwort

1

ich denke, man dies bedeuten:

$leadsCount = Approval::find() 
       ->select(['COUNT(id) AS cnt, coalesce(`status`, "total")']) 
       ->groupBy(new \yii\db\Expression('`status` ASC WITH ROLLUP')) 
       ->all(); 

Das Verfahren with() ist über Objektbeziehungen, was etwas comple tlich anders.

Sie müssen auch die Spalte Status angeben, da es sich um eine reserved word in MySQL handelt.

BTW: Sie können auch asArray() (->asArray()->all();) verwenden, da Sie keine Genehmigungsobjekte mit dieser Abfrage erhalten.

+0

bekommen den gleichen Fehler, der nicht funktioniert, wollen ROLLUP mit dieser Abfrage verwenden, um die Gesamtzahl der Zählungen zu erhalten. –

+0

@AvinashRaut Meine Antwort wurde aktualisiert. Verwenden Sie Backticks, um die Spalte zu zitieren. HTH – robsch

+0

Klasse 'Yii \ db \ Ausdruck' wurde nicht gefunden, derselbe Fehler wird erhalten @robsch –