Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Cheguei em um ponto da minha aplicação em que preciso relacionar tabelas em uma única consulta.
Até o momento, uso uma classe DAO para cada tabela no banco de dados, com funções CRUD básicas.Mas agora surgiu a necessidade de relacionar essas tabelas, qual é a camada que faz isso e como ela funciona?
Por exemplo: A Classe PermissionsDAO faz insert, update, delete, select na tabela permissions, mas essa classe agora precisa acessar as tabelas privileges, groups, user_groups, etc.
Procurei na net, há várias explicações, (e a busca aqui do Fórum está desagradável)
mas cada um diz uma coisa. Fiquei mais confuso ainda!
Estou tentando implementar o padrão MVC.Já havia lido sobre todos esses assuntos, porém na internet há muito conteúdo ultrapassado e mal explicado. Por isso decidi pedir ajuda
aqui e ver se estava no caminho certo!
Muito Obrigado Gabriel Heming!
O padrão MVC pouco vai lhe dizer sobre essa situação (apenas que deve ser implementado na Model).
Esse problema é conhecido como Object-relational impendance mismatch
No caso do DAO, não existe muito mistério, apenas quem vai fazer o que. Você pode dar uma lida no conteúdo do link abaixo:
Data Access Objects (DAO) - Mapping Relations Between Objects#Mapping_Relations_Between_Objects)
Apesar dos exemplos em PHP serem um pouco antigos, o conceito continua o mesmo.
Outro ponto, é que diferentes implementações resolvem o mesmo problema. Esse é o caso de implementações dentro de um mesmo pattern (caso da DAO) ou até outros patterns que tratam de um problema similar, como o caso do DataMapper (que ao meu ver é o mais completo de todos).
No link abaixo você pode verificar dois exemplos de um mesmo problema:
Ambos os exemplos podem ser empregados, mas, depende da abordagem que você quer dar ao seu software. Se endereço deve existir apenas no contexto da pessoa ou se pode existir de forma independente.