dao Muster und Beziehungen

9

Ich arbeite mit DAO-Muster in PHP. Ich verstehe die Vorteile, die Sie erhalten, wenn Sie Ihr Modell auf diese Weise trennen, aber was ich nicht verstehe, ist, wie Sie DAOs und VOs erstellen sollen, wenn Ihre Tabellen durch assoziative Entitäten miteinander verknüpft sind

Ich gebe ein Beispiel:

In meinem DB habe ich

%Vor%

Ich erstelle UserVO , PostVO mit entsprechenden Setter und Getter und dann UserDAO und PostDAO verantwortlich für SQL dass am Ende VOs zurückgeben. Die Durchführung von CRUD-Operationen mit Daten aus diesen Tabellen ist wirklich einfach, aber wenn Sie anfangen, Tabellen zu verknüpfen und Daten über verschiedene Tabellen hinweg zu lesen, denken Sie, dass die Verwendung von DAO nicht mehr so ​​einfach ist ...

Wie würden Sie Ihr DAO-Muster organisieren, wenn Sie alle Kommentare des Autors des Artikels zurückgeben möchten? Ich brauche keine SQL-Abfrage, ich gebe dies nur als Beispiel für eine reale Situation ...

Ich habe gelesen, dass es eine gute Idee wäre, assoziative DAO und Vo für jede assoziative Tabelle zu haben. Woraus würde sein VO bestehen? Nur 2 Fremdschlüssel oder von allen Attributen aus beiden Tabellen?

Wenn die Logik DAO und VO für assoziative Entitäten hat, was sind die Lösungen, wenn die Abfrage mehr als 3 Tabellen "durchläuft" (mit 2 assoziativen Entitäten)?

Ich bezweifle, dass das DAO-Muster ein Objekt namens users_posts_comments_article:)))

hätte

Danke

    
luigi7up 24.06.2011, 12:08
quelle

2 Antworten

1

Als Sie selbst welche Art von Daten Sie bekommen möchten und schreiben Sie eine Schicht, die das bietet. Denken Sie nicht darüber nach, wie Sie Klassen bezeichnen, die mehr als zwei Tabellen verbinden. Sie denken darüber nach, Ihre Tabellen in Modelle umzuwandeln, und Sie könnten in eine Richtung gehen, die für Ihr Projekt nicht geeignet ist. Da ich nicht weiß, wie groß Ihr Projekt ist, kann ich nicht sagen, ob das OK wäre oder nicht.

Hier ist eine Lektüre, die Sie auf jeden Fall zum Nachdenken anregen wird: Ссылка

>

Zitat aus diesem Artikel (er bezieht sich auf Domain-Modelle):

  

Wenn Sie in diesen Begriffen denken, Sie   fange an, dein System zu zerbrechen   diskrete Stücke, die Sie brauchen   manipulieren und überlegen, wie   Jedes Stück bezieht sich auf die anderen. Dies   Art der Übung hilft Ihnen auch zu stoppen   Denken Sie an Ihr Modell in Bezug auf   Datenbanktabellen; stattdessen, dein   Datenbank wird zum Container in   welche Daten von einer Verwendung erhalten bleiben   von deinem Modell zum nächsten. Dein Modell   stattdessen ist ein Objekt, das tun kann   Dinge mit entweder ankommend oder gespeichert   Daten - oder sogar komplett   autonom.

    
Julian 24.06.2011 15:19
quelle
0

Halte es einfach, s. DAO oder was auch immer Philosophie oder irgendetwas kann nur bis zu einem gewissen Grad sinnvoll sein.

IMHO, das ist eine Verschwendung von Zeit für so eine einfache Sache wie ein Blog, wenn Sie Abstraktion wollen, gehen Sie einfach für einfache getitem ('Klasse', $ Bedingungen) oder verwandte ($ pathandconditions, $ itemconditions).

Diese Art von Sachen deckt definitiv alle Bedürfnisse, die Sie für grundlegende SQL verwenden können.

Der getUsersWhoHaveAFrigginLongMethodNameofDoom ist wirklich eine schlechte Idee, wenn man solche nicht abstrahierten, übermäßig kopierten / eingefügten Funktionen direkt gegen die Wartbarkeit usw. entscheidet.

    
Morg. 22.09.2011 11:11
quelle

Tags und Links