Rekursive SQL Abfragen
Eigentlich ein Anfängertipp, aber hätte mir den jemand vor drei Monaten verraten, hätte ich mich sicherlich leichter getan, ein Forum mit CakePHP zu erstellen.
Problemstellung z.B.:
Ihr habt drei SQL Tabellen. Boards,Threads und Posts. Jedes Board hat dabei viele Threads, und viele Threads haben viele Posts.
Der Aufruf im Boards Controller sähe so aus:
$this->board->findall();
Dies bringt mir dieses Ergebnis:
Board1 {
Thread1
Thread2
Thread3
}
Board2{
Thread4
...
}
Nun möchte ich in der Boards Ansicht aber die Zahl aller Postings dieses Boards haben. Nun gibt es verschiedene Möglichkeiten.
1. Ich könnte den Posts noch die board_id mit auf den Weg geben, was aber nur zusätzlicher Balast wäre.
2. Ich könnte im Controller eine Schleife über alle Threads des Boards laufen lassen, was aber auch nur zusätzliche Zeit kostet.
Viel einfach ist es nun, folgendes zu schreiben:
$this->Board->recursive = 2;
$this->Board->findall();
Nun werden automatisch alle Posts zu den Threads geholt. Diesen Tipp kann man für viele unterschiedliche Problemstellungen verwenden.
Achtung: Rekursionen können bei größeren Datensätzen zu Geschwindigkeitseinbußen führen.
Kategorie: CakePHP | 1 Kommentar »
Veröffentlicht am Sonntag, den 13. Mai 2007 um 17:33 Uhr veröffentlicht
Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.
