ChrisB: Datencontainer für einen Join

Beitrag lesen

Hi,

Was mir noch als Notlösung eingefallen wäre, wäre eine Generierung von PHP code.

So ist ORM ja auch in den meisten Frameworks umgesetzt - der benötigte Code zum Zugriff auf Tabellen wird automatisch generiert.
Allerdings eher auf Klassen-Ebene.

Der öffnet die Datei class.user und class.rechnung sucht nach den Methoden und baut daraus eine neue class.userrechnung. Ist aber reiner pfusch

Wenn du so vorgehst, Ja :-)

Wenn du bestimmte JOINs hast, die du immer wieder brauchst - dann könntest du dafür eine VIEW anlegen.
Deren Definition kann dann ein Script auslesen, und dazu den passenden PHP-Code für ein ORM-Objekt generieren.

Wenn du aber für „jede beliebige“ Abfrage, die sich der Entwickler vielleicht irgendwann mal ausdenken könnte, ein entsprechendes Objekt erstellen willst, ist der Ansatz weniger sinnvoll.
Dann solltest du keine „direkten“ Queries absetzen (lassen), sondern erst mal ein Query-Objekt haben, über das man sich eine Abfrage „zusammenbauen“ kann - schau dir bspw. mal Doctrine's DQL an; Dort genauer die Beispiele, in denen Queries zusammengesetzt werden:

$q = Doctrine_Query::create()  
    ->select('u.username, p.*')  
    ->from('User u')  
    ->leftJoin('u.Phonenumbers p');

Wenn du die Query auf diese Weise erstellst, dann hast du auch eine Stelle, an der du gleichzeitig die Struktur des Ergebnisses analysieren kannst.
Damit kannst du dann auch (dynamisch) entsprechende Methoden zum Zugriff auf die Ergebnisse bereit stellen.

MfG ChrisB

--
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?