Servus,
ich stehe vor folgemdem Problem. Ich plane an einem Projekt, das ich über das Mojavi-MVC-Framework (http://www.mojavi.org) realisieren will.
Die eigentliche Problemstellung ist die Abbildung der Tabellenstruktur in Klassen. Nehmen wir man an ich habe eine Tabelle "Schulklasse", die eine 1-n Relation zur Tabelle "Schüler" enthält.
Dafür benötige ich nach der Theorie nach ja nun 2 Klassen "Schulklasse" und eben wieder "Schüler". Beide haben zum Beispiel eine Methode "load()", die den entsprechenden Datensatz anhand der "id" aus der jeweiligen Tabelle holt.
Wenn ich jetzt einen Schüler anzeigen will, verwende ich folgenden Pseudo-Code:
Wenn ich jetzt aber alle Schüler ausgeben will, die einer Schulklasse angehören - dann muss ja die Klasse "Schulklasse" eine Liste (Array) von "Schüler" enthalten. Rein nach der MVC-Lehre nach muss ja nun "Schulklasse" x-Mal die load-Methode von "Schüler" aufgerufen werden, was jedesmal eine neue Datenbankverbindung bedeutet:
Performancemäßig bei mehreren Datensätze ja eine Katastrophe. Besser wäre ja eine Abfrage:
Noch besser wäre natürlich folgende Abfrage, damit zusätzlich zusammen gleich die Daten der Schulkasse geladen werden:
Auf die Schnelle würde ich diese Abfrage irgendwo in einer Methode in "Schulklasse" unterbringen und die geladenen Datensätze dann irgendwie wieder in einer "Schüler"-Liste speichern. Aber das würde ja dann die MVC-Lehre etwas durchbrechen.
Ich weiss dass es OR-Mapping-Klassen gibt, habe aber in PHP noch nichts gefunden, bzw. entsprechende Doku dazu. Wie bildet man so ein Problem nun am besten (Performance und Lehre) ab? Vorallem wenn es dann auch mal JOINS über mehrere Tabellen geben soll.
gruss Markus
ich stehe vor folgemdem Problem. Ich plane an einem Projekt, das ich über das Mojavi-MVC-Framework (http://www.mojavi.org) realisieren will.
Die eigentliche Problemstellung ist die Abbildung der Tabellenstruktur in Klassen. Nehmen wir man an ich habe eine Tabelle "Schulklasse", die eine 1-n Relation zur Tabelle "Schüler" enthält.
EDIT:
Schulklasse
-----------
id
name
Schüler
-------
id
schulklasse_id
name
...
Dafür benötige ich nach der Theorie nach ja nun 2 Klassen "Schulklasse" und eben wieder "Schüler". Beide haben zum Beispiel eine Methode "load()", die den entsprechenden Datensatz anhand der "id" aus der jeweiligen Tabelle holt.
Wenn ich jetzt einen Schüler anzeigen will, verwende ich folgenden Pseudo-Code:
EDIT:
Schueler::load(12);
Wenn ich jetzt aber alle Schüler ausgeben will, die einer Schulklasse angehören - dann muss ja die Klasse "Schulklasse" eine Liste (Array) von "Schüler" enthalten. Rein nach der MVC-Lehre nach muss ja nun "Schulklasse" x-Mal die load-Methode von "Schüler" aufgerufen werden, was jedesmal eine neue Datenbankverbindung bedeutet:
EDIT:
SELECT * FROM schueler WHERE id=xyz
Performancemäßig bei mehreren Datensätze ja eine Katastrophe. Besser wäre ja eine Abfrage:
EDIT:
SELECT * FROM schueler WHERE schulklasse_id=xyz
Noch besser wäre natürlich folgende Abfrage, damit zusätzlich zusammen gleich die Daten der Schulkasse geladen werden:
EDIT:
SELECT * FROM schuklasse LEFT JOIN schueler...
Auf die Schnelle würde ich diese Abfrage irgendwo in einer Methode in "Schulklasse" unterbringen und die geladenen Datensätze dann irgendwie wieder in einer "Schüler"-Liste speichern. Aber das würde ja dann die MVC-Lehre etwas durchbrechen.
Ich weiss dass es OR-Mapping-Klassen gibt, habe aber in PHP noch nichts gefunden, bzw. entsprechende Doku dazu. Wie bildet man so ein Problem nun am besten (Performance und Lehre) ab? Vorallem wenn es dann auch mal JOINS über mehrere Tabellen geben soll.
gruss Markus
Kommentar