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ätteDanke
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.
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.
Tags und Links php design-patterns dao