Normalmente, un Data Mapper mappa i dati di una particolare tabella. (Teoricamente dovrebbe comunicare tra lo Storage e un Domain Object, ma non è possibile nel mio caso, quindi sto comunicando direttamente con le tabelle.)
Table1Mappper > Table1
Ma se quella tabella richiede che i dati vengano uniti da un'altra tabella, allora stai espandendo l'ambito del tuo Data Mapper che era solo supposto mappare da una tabella.
Table1Mapper > Table1 :inner-join: Table2
Non sarebbe meglio se Table2 avesse il suo mapper Table2Mapper
per mappare i suoi dati?
Se pensi Yes
, se vuoi mostrare un elenco di record da Table1Mapper e poi utilizzare Table2Mapper per ottenere quei dati che dovevano essere uniti, stai andando a eseguire una query in un ciclo, che non va bene neanche.
Che intuizioni su questo modo?
Un altro modo è quello di cambiare il tuo mapper per gestire le sotto tabelle?
class Table1Mapper {
public main_table = 'table1';
public sub_table1 = 'table2';
}
Penso che vada bene, ma solo fino a quando l'ambito dell'intero mappatore sta trattando una particolare entità nell'applicazione. Ad esempio post
e post_author
. Ma se l'ambito è diverso come post
e gallery
, quanto sopra non darà un mappatore dati ideale. Per illustrare questo
class PostMapper {
public table_name = 'tbl_post';
public gallery_table_name = 'tbl_gallery';
}
Non è corretto vero? Ma comunque vorrai prendere le gallerie di un post in una sola query, perché aggiungere un sovraccarico di query in un ciclo non è una buona soluzione.
Quale pensi che sia il modo giusto di risolverlo in DataMapper Pattern / o in qualsiasi altro pattern se ha un modo migliore di gestire tali casi?