Implementieren für das Symfony-basierte Lauftagebuch (Übung 6) ein Statistik-Feature. Dazu sollen die Einträge aller Läufer ausgewertet werden um folgende Ranglisten zu erstellen:
Beide Ranglistenarten soll es in drei Varianten geben, die jeweils verschiedene Teilmengen der Gesamtdaten berücksichtigen:
Ingesamt gibt es also 6 (= 2 × 3) Ranglisten mit je 5 Einträgen.
Die Ranglisten sollen jeweils als Tabellen mit Platzierung (1. bis 5.), Läufernamen als Link zum Läuferprofil, und jeweiligem Wert (also Gesamtstrecke bzw. Gesamt-Durchschnittgeschwindigkeit) angezeigt werden.
Sonderfälle (siehe auch Beispiel):
Top 5 Langstreckenläufer der letzten 7 Tage
Platz Läufer Strecke 1. Petra 15.1 km 2. Klausi 9.4 km 3. Maya 9.4 km 4. Franz 0.8 km
Implementieren Sie die Logik nicht mit PHP-Mitteln (d.h. Schleifen, Arithmetik, ...), sondern lassen Sie die Datenbank die Arbeit machen. Nutzen Sie dafür die Doctrine Query Language (DQL), die Ihnen SQL-artige Ausdrücke ermöglicht, die auf Objekten (statt, wie bei SQL, Tabellen) angewendet werden. Pro Rangliste reicht ein einziger DQL-Query, der die Ergebnisse in einer Form ausgibt, die direkt einem Template übergeben werden können!
Hinterlegen Sie Ihre Ranglisten-Implementierungen in einer Repository-Klasse.
Natürlich sollen die Ranglisten auch angezeigt werden. Es ist Ihnen überlassen, ob Sie bestehende Controller/Templates ergänzen, oder neue Controller/Templates erstellen. Beides ist ähnlich leicht, da die eigentliche Logik ohnehin in einer Repository-Klasse liegen soll.
mt_rand(int min, int max)
können Sie zufällige, ganze Zahlen ermitteln.$ php bin/console doctrine:query:sql "SELECT ..."
dump()
besser lesbare
Ausgaben erzeugen als mit PHPs var_dump()
oder print_r()
.