Ich bin relativ neu zu Yii.Yii fügen Sie eine weitere zu CDbCriteria
Ich war zuversichtlich mit Raw SQL, aber immer noch ein bisschen verloren, wenn es ORM kommt. Das ist also eine Scheinfrage.
Ich habe alle notwendigen Datensätze Bau einer solchen CDbCriteria
Introduction:
$criteria = new CDbCriteria(array(
'select' => 'sum(items) as items',
// 'condition' => 't.items > 0 and order.storage = "'Product::STORAGE_LOCAL . '"',
'condition' => 't.items > 0 and order.storage = "' . Product::STORAGE_LOCAL . '"',
'order' => 'sum(items) DESC',
'with' => array(
'product' => array(
'select' => 'code, title, producer, local_rest',
**// 'select' => 'code, title, producer, sum(local_rest) as local_rest',**
'group' => 'product.code',
)
),
'join' => 'inner join `order` `order` on `t`.`order_id` = `order`.`id`',
// 'group' => '`product`.`code`, `product`.`title`',
'group' => '`product`.`code`',
'together' => true
));
Ich versuche Summe von local_rest
Feld zu bekommen group by
tun. Leider gibt es nicht zurück, was es sein sollte.
Dies ist, wie ich in es in CDbCriteria
zu bauen versucht:
// 'select' => 'code, title, producer, sum(local_rest) as local_rest',
. - kein Glück.
kann ich das es mit getrennten Abfrage erhalten:
$sum_local_rest = Yii::app()->db->createCommand("
SELECT id,code, title, sum(local_rest) as sum_rest FROM product GROUP BY code
ORDER BY `sum_rest` DESC
");
Eine weitere Vorsicht - es gibt doppelte Datensätze in Produkttabelle. I.e. Wir haben das gleiche Produkt mehr als einmal. Aber wenn ich GROUP BY
verwende, hilft es, diesen Mangel zu begrenzen. Dies liegt an schlechtem DB-Design und sollte in Zukunft behoben werden.
Das Problem ist, dass ich es irgendwie zu binden, mit CDbCriteria
, weil es von GridView
verwendet verwendet wird durch CDataProvider
und CDataProvider
.
Irgendwelche Tipps, wie Sie diese beiden Fragen in einem CDbCriteria
verbinden?
Vielen Dank im Voraus
EDIT
bei den aktuellen Antworten der Suche ich fühle ich mich zusammenfassen müssen. Das Hauptproblem ist, dass ich CDbCriteria
mitteilen muss, um Aufzeichnungen zu erhalten (gebunden durch HAS_Many Verbindungen) und SUMME von allen diesen Aufzeichnungen zu berechnen und CDbCriteria
zu machen, um GROUP BY dieser Aufzeichnungen zu tun. Kein anderer Weg. Ich kann das nicht explizit machen. Weil ich CDbCriteria
an CDataProvider
überlasse und es Abfragen ausführen sollte. So funktionieren die Dinge in Yii (so weit ich es verstehe).
haben Sie versucht, mit Array ("Spalte1", "Spalte2") auswählen? http://www.yiiframework.com/doc/api/1.1/CDbCriteria#select-detail –
Überprüfen Sie auch diesen Link http://stackoverflow.com/a/12299137/3793566 und http://stackoverflow.com/a/ 16536633/3793566 –
das Problem ist, ich brauche es aus verwandten Tabelle. – Tebe