2017-12-14 4 views
0
<?php 
$query1 = (new \yii\db\Query()) 
     ->select(["DATE_FORMAT(approvedate, '%m-%Y') as c_date", 'sum(totalhours) as total', 'count(sku) as sku']) 
     ->from('sku3d') 
     ->where(['status' => 'Approved'])->orWhere(['status' => 'Cancelled']) 
     ->groupBy('c_date', 'status'); 

     $dataProvider1 = new ActiveDataProvider([ 
      'query' => $query1, 
    ]); 

     echo GridView::widget([ 
    'dataProvider' => $dataProvider1, 
    'columns' => [ 
     'c_date:text:Month', 
     [ 
     'header'=>'Cancelled SKU', 
     'value' => function($data) { 
       return Sku3d::getCancel(); 
     } 
    ], 
     'sku:text:Total Sku', 
     'total:text:Total hours', 

    ] 
]); 

?> 

Mein Modell zu gridview:Yii2 echo Variable außerhalb Dataprovider

public function getCancel() 
{ 
    return (new \yii\db\Query()) 
    ->select(["DATE_FORMAT(approvedate, '%m-%Y') as c_date"]) 
    ->from('sku3d') 
    ->where(['status' => 'Cancelled'])->groupBy('c_date')->count(); 
    } 

ich den oben stehenden Code verwendet, um alle genehmigten Produkte und entwertet Produkte als insgesamt zu zählen. Ich muss zählen, wie viele abgebrochene sku jeden Monat und liste es in einer anderen Spalte, jetzt listet es alle ohne Gruppe nach Monat. Beispiel: Im November gibt es 1 abgebrochen sku (2 Stunden) und 1 genehmigt sku (4 Stunden) und im Dezember gibt es 1 sku genehmigt, nicht aufgehoben wird, soll es zeigen:

Month Cancelled Sku Hours 
11-2017 1   2  6 
12-2017 0   1  3 

Gerade jetzt ist es zeigt:

Month Cancelled Sku Hours 
11-2017 1   2  6 
12-2017 1   1  3 

Ich bin hier stecken, bitte beraten. Danke.

+0

Verwenden Sie eine benutzerdefinierte Funktion und einen Rückruf in Ihrer Rasteransicht. – Kalu

+0

kannst du mir ein beispiel zeigen? danke –

Antwort

0

Ihrer Ansicht:

echo GridView::widget([ 
    'dataProvider' => $dataProvider1, 
    'columns' => [ 
     'c_date:text:Month', 
     [ 
      'header'=>'any title', 
      'value' => function($data) { 
        return ModelName::getCountSomething(); 
      } 
     ], 
     'sku:text:Total Sku', 
     'total:text:Total hours', 
    ] 
]); 

In Ihrem Modell:

public static function getCountSomething() 
{ 
    return (new \yii\db\Query()) 
    ->select('*') 
    ->from('sku3d') 
    ->where(['status' => 'Cancelled']) 
    ->count(); 

} 

so ähnlich.

+0

Ich benutzte Gruppe von "c_date" und es zeigt "Aufruf an ein Mitglied Funktion getCountSomething() auf Array" –

+0

bearbeitet meine Antwort – Kalu

+0

Hallo @Kalu, es hat funktioniert, vielen Dank, aber immer noch nicht, was ich noch brauche. Ich habe meine Frage bearbeitet, bitte beraten. Nochmals vielen Dank. –