Normalerweise ordnet ein Data Mapper Daten einer bestimmten Tabelle zu. (Theoretisch sollte es zwischen Speicher und einem Domänenobjekt kommunizieren, aber in meinem Fall ist dies nicht möglich, sodass ich direkt mit Tabellen kommuniziere.)
Table1Mappper> Table1
Wenn für diese Tabelle jedoch Daten aus einer anderen Tabelle verknüpft werden müssen, erweitern Sie den Bereich Ihres Data Mapper, der nur für die Zuordnung aus einer Tabelle vorgesehen war.
Table1Mapper> Table1: Inner-Join: Table2
Wäre es nicht besser, wenn Table2 einen eigenen Mapper hätte, Table2Mapper
um seine Daten abzubilden ?
Wenn Sie denken Yes
, wenn Sie eine Liste von Datensätzen aus Table1Mapper anzeigen und später Table2Mapper verwenden möchten, um die Daten abzurufen, die verbunden werden sollten, führen Sie eine Abfrage in einer Schleife aus, was auch nicht gut ist.
Was sind Ihre Erkenntnisse auf diesem Weg?
Eine andere Möglichkeit besteht darin, Ihren Mapper so zu ändern, dass er Untertabellen verarbeitet.
class Table1Mapper {
public main_table = 'table1';
public sub_table1 = 'table2';
}
Was ich für in Ordnung halte, aber nur, bis der Umfang des gesamten Mappers eine bestimmte Entität in der Anwendung behandelt. Zum Beispiel post
und post_author
. Wenn der Umfang jedoch anders ist als post
und gallery
, ergibt das oben Gesagte keinen idealen Daten-Mapper. Um dies zu veranschaulichen
class PostMapper {
public table_name = 'tbl_post';
public gallery_table_name = 'tbl_gallery';
}
Ist das nicht richtig? Sie möchten jedoch die Galerien eines Posts in einer Abfrage abrufen, da das Hinzufügen eines Abfrage-Overheads in einer Schleife keine gute Lösungsleistung darstellt.
Was ist Ihrer Meinung nach der richtige Weg, um dies in DataMapper Pattern / oder einem anderen Muster zu lösen, wenn es eine bessere Möglichkeit gibt, solche Fälle zu behandeln?