Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estive estudando Design Patterns para persistência de dados no bd e não gostei de nenhum deles, como Table Data Gateway, Row Data Gateway e Active Record.
Gostaria de saber de algum pattern para poder trazer dados do bd entre tabelas relacionadas, usando joins, union, etc e não ficar realizando várias consultas (de forma picada), toda vez que precisar retornar algum dado relacionado com o registro de uma determinada tabela.
Outra coisa que gostaria, é selecionar apenas alguns campos da tabela, e não todos como os exemplos que vi fazem.
Abraços à todos :thumbsup:
Bom... sem ser pelo Zend, tem algum exemplo com PHP puro?
Posso pensar em algo amanhã à tarde para te mostrar, hoje não rola...
Se puder aguardar...
cara pq voce nao usa o doctrine ?
Com o Row Data Gateway isso é perfeitamente possível.
Gosto bastante da implementação do Zend Framework: na hora que você cria o objeto RDG, você passa os pares campo => valor para ele, qualquer conjunto deles. Como você está trazendo os dados do banco, assume-se que eles são válidos.
Depois disso, você só pode setar valores para campos que já existem dentro do objeto.
Exemplo:
$rdg->set('name', 'Leonard'); // OK $rdg->set('lastname', 'Hofstadter'); // lança exceção, campo não existeMesmo trazendo dados de JOINs, você conseguirá representá-lo numa mesma estrutura.
O problema maior é para representar dados com "filhos", de um relacionamento 1:N, por exemplo. Como RDG representa exatamente uma linha de tabela, ele é um objeto de um só nível.
Entretanto, isso pode ser fácilmente contornado, adicionando-se ao objeto um campo (array) especial para dependências. Para cada tabela dependente, é POSSÍVEL incluir dados no objeto. Isso acaba descaracterizando um pouco a ideia original do padrão, mas funciona perfeitamente.