SQL - Tabellenoperationen

Hallo,

irgendwie erschließt sich mir die Eleganz des Frameworks noch nicht.

Die einfache SQL Anfrage

SELECT COUNT(*) FROM tabelle

wollte ich nun in Yii abbilden. Die Klasse ‘CDbCommandBuilder’ hat ja die Methode ‘createCountCommand()’

Klingt einfach - ist es aber nicht, da div. Parameter erforderlich sind.

$table => ist klar, siehe obiges SQl Statement.

aber warum sind für mein simples Beispiel Kriterien und Alias erforderlich ?

Denke ich zu einfach oder zu kompliziert ?

Wie sieht denn ein einfacher Aufruf aus ? Oder muss ich tatsächlich alle Parameter generieren ?

Scryii

Wie wärs damit (falls du ein ActiveRecord hast):




$num=Blabla::model()->count();



Und falls du keins hast:


$num=Yii::app()->db->createCommand('SELECT COUNT(*) FROM tabelle')->queryScalar();

Hallo Mike,

besten Dank für Deinen Beitrag !

Vorschlag 1 ist elegant, heißt doch aber, dass ich ERST die Daten auslesen muss, und DANN die Größe nachfrage (wenn ich es richtig verstanden habe …)

Vorschlag 2: Geht gut.

Ich versuche gerade YII zu verstehen (irgendwann geht das Coding sicher super fix). Vorschlag 2 geht wie gesagt - habe mich nur gefragt, welche Funktion seitens der Yii - Entwickler für ein COUNT auf die DB vorgesehen ist.

Scryii

Die erste Methode is die Methode der Wahl, wenn du ein ActiveRecord angelegt hast. Es werden dabei keine Records eingelesen (das passiert nur bei den find-/findAll-Varianten). count() erzeugt genau das gleiche SQL wie die zweite Variante, aber abstrahiert das ganze einfach etwas.

Am besten du aktivierst mal eine CWebLogRoute, setzt YII_DEBUG auf true und schaltest enableParamLogging in deiner db-Konfiguration ein. Dann siehst du am Ende jeder Seite ein ausführliches Anwendungslog, wo auch alle SQL-Abfragen auftauchen.

Siehe auch: http://www.yiiframework.com/doc/guide/de/topics.logging