2017-02-07 1 views
0

Wie Aggregation in MongoDB/ActiveQuery erstellen? Wenn zum Beispiel die Verwendung von MySQL/ActiveQuery meine Abfrage sieht wie folgt aus:Yii2. Wie verwende ich die Aggregation in MongoDB/ActiveQuery?

$query = new Query(); 
$query->select(['name', '(field1 + field2) AS calculated_field']); 

Wie diese Abfrage in MongoDB/ActiveQuery bauen?

(Ich verwende Abfrage für ActiveDataProvider. Ich brauche nicht nur für Anzeigefeld, müssen für die Art dieses Feld auch)

Antwort

0

Sie Eigenschaften in Yii2 verwenden können (Getter und Setter) für das Modell, so dass Sie muss es nicht in SQL-Abfrage fest codieren. Zum Beispiel haben Sie ein Modell "Mensch" mit zwei Spalten: Name, Vorname. Und durch das Schreiben

$human = Human::findOne(0); 
echo $human->fullname; 

Sie wollen human- $ human-> Name und $ aggregieren> Nachnamen. So können Sie die folgenden in Modellcode tun

* @property string $name (from database) 
* @property string $surname (from database) 
* @property string $fullname 
class Human extends \yii\db\ActiveRecord 
{ 
... 
public function getFullname() { 
     return $this->name.' '.$this->surname; 
    } 
... 
} 

das alles ist, wenn Sie $ human-> Fullname nennen, es wird wieder die getFullName() Funktionswert

+0

Ich brauche nicht nur für Anzeigefeld, Notwendigkeit um auch nach diesem Feld zu sortieren. –

+0

@ АндрейЛитвиненко, dann können Sie einfach die angegebenen Schritte für die benutzerdefinierte Spalte activerecord wiederholen http://stackoverflow.com/questions/28578057/sort-and-filter-data-in-gridview-yii2-where-column-is-not- In-Datenbank – Yerke

+0

danke. Dieses Beispiel funktioniert nur für MySql, funktioniert aber nicht mit MongDb –

Verwandte Themen