Normalmente, um Mapeador de Dados mapeia dados de uma tabela específica. (Teoricamente, ele deve estar se comunicando entre armazenamento e um objeto de domínio, mas não é possível no meu caso, por isso estou me comunicando diretamente com as tabelas.)
Table1Mappper> Table1
Mas se essa tabela exigir que os dados sejam unidos a partir de outra tabela, você estará expandindo o escopo do seu Mapeador de Dados, que deveria apenas mapear a partir de uma tabela.
Table1Mapper> Table1: junção interna: Table2
Não seria melhor se o Table2 tivesse seu próprio mapeador Table2Mapper
para mapear seus dados?
Se você pensa Yes
, se deseja mostrar uma lista de registros do Table1Mapper e depois usar o Table2Mapper para obter os dados que deveriam ser unidos, você vai executar uma consulta em um loop, o que também não é bom.
Quais são suas idéias sobre esse caminho?
Outra maneira é mudar seu mapeador para lidar com sub-tabelas?
class Table1Mapper {
public main_table = 'table1';
public sub_table1 = 'table2';
}
O que eu acho que está bem, mas apenas até que o escopo de todo o mapeador esteja lidando com uma entidade específica no aplicativo. Por exemplo post
e post_author
. Mas se o escopo for diferente como post
e gallery
, o acima não fornecerá um mapeador de dados ideal. Para ilustrar isso
class PostMapper {
public table_name = 'tbl_post';
public gallery_table_name = 'tbl_gallery';
}
Não está correto, está? Porém, porém, você desejaria pegar as galerias de uma postagem em uma consulta, porque adicionar uma sobrecarga de consulta em um loop não é um bom desempenho da solução.
Qual você acha que é o caminho certo para resolver isso no DataMapper Pattern / ou em qualquer outro padrão, se houver uma maneira melhor de lidar com esses casos?