Normalmente, un asignador de datos asigna datos de una tabla en particular. (Teóricamente, debería estar comunicándose entre el Almacenamiento y un Objeto de dominio, pero no es posible en mi caso, por lo que me estoy comunicando directamente con las tablas).
Table1Mappper> Table1
Pero si esa tabla requiere que los datos se unan desde otra tabla, entonces está expandiendo el alcance de su Data Mapper, que solo se suponía que debía mapear desde una tabla.
Table1Mapper> Table1: inner-join: Table2
¿No sería mejor si Table2 tuviera su propio mapeador Table2Mapper
para mapear sus datos?
Si piensa Yes
, entonces si desea mostrar una lista de registros de Table1Mapper y luego usar Table2Mapper para obtener los datos que se suponía que se unirían, ejecutará una consulta en un bucle, lo que tampoco es bueno.
¿Cuáles son sus ideas de esta manera?
¿Otra forma es cambiar su mapeador para manejar subtablas?
class Table1Mapper {
public main_table = 'table1';
public sub_table1 = 'table2';
}
Lo cual creo que está bien, pero solo hasta que el alcance de todo el mapeador esté tratando una entidad particular en la aplicación. Por ejemplo post
y post_author
. Pero si el alcance es diferente como post
y gallery
, lo anterior no dará un mapeador de datos ideal. Para ilustrar esto
class PostMapper {
public table_name = 'tbl_post';
public gallery_table_name = 'tbl_gallery';
}
No es correcto, ¿verdad? Sin embargo, sin embargo, querrá obtener las galerías de una publicación en una consulta, ya que agregar una sobrecarga de consulta en un bucle no es un buen rendimiento de la solución.
¿Cuál crees que es la forma correcta de resolver esto en DataMapper Pattern / o cualquier otro patrón si tiene una mejor manera de manejar estos casos?