Ik ben gestart met de implementatie van een applicatie waarbij gebruik wordt gemaakt van het Zend framework. Ik wil het model mappen op de database middels Zend_Db_Table_Abstract. De database ziet er ongeveer zo uit:
Met 1 SQL query waar een paar Joins in zitten kan ik dus in principe alle informatie van 1 gebruiker selecteren. Ik probeer het model echter te mappen adhv Zend_Db_Table_Abstract en daarbij zie ik niet zo snel hoe ik dit netjes kan doen. Ik kan doormiddel van $_dependentTables en $_referenceMap bij elke table de relatie aangeven alleen lijkt deze niet iets te joinen maar bied het alleen een interface aan om via de klasse Users (welke een Zend_Db_Table_Abstract is van de tabel 'users') de contactinfo rij op te vragen middels findDependentRowset(..);
Als ik het op deze manier implementeer wordt er dus voor elke tabel een aparte query uitgevoerd terwijl dat totaal onnodig is als ik van te voren al weet dat een gebruiker wil hebben met al zijn informatie. Is dit binnen Zend op een andere manier op te lossen of zal ik alsnog zelf mijn query's moeten gaan schrijven / een aparte ORM mapper moeten gebruiken? Mijn ervaring met Zend is zeer minimaal en ik heb ook geen ervaring met ORM mappers in PHP en wil het daarom het liefst bij Zend houden om de leercurve niet te groot te maken.
In de zenddocumentatie wordt er wel over relaties gesproken maar daar wordt eigenlijk hetzelfde gedaan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [users] (username, password ... contactinfo) [contactinfo] (email, tel, ... postalinfo) [postalinfo] (naam, organisatie, ... address) [address] (straat, huisnr, ...) users->contactinfo: 1op1 contactinfo->postalinfo: 1opMeer postalinfo->address: 1op1 |
Met 1 SQL query waar een paar Joins in zitten kan ik dus in principe alle informatie van 1 gebruiker selecteren. Ik probeer het model echter te mappen adhv Zend_Db_Table_Abstract en daarbij zie ik niet zo snel hoe ik dit netjes kan doen. Ik kan doormiddel van $_dependentTables en $_referenceMap bij elke table de relatie aangeven alleen lijkt deze niet iets te joinen maar bied het alleen een interface aan om via de klasse Users (welke een Zend_Db_Table_Abstract is van de tabel 'users') de contactinfo rij op te vragen middels findDependentRowset(..);
Als ik het op deze manier implementeer wordt er dus voor elke tabel een aparte query uitgevoerd terwijl dat totaal onnodig is als ik van te voren al weet dat een gebruiker wil hebben met al zijn informatie. Is dit binnen Zend op een andere manier op te lossen of zal ik alsnog zelf mijn query's moeten gaan schrijven / een aparte ORM mapper moeten gebruiken? Mijn ervaring met Zend is zeer minimaal en ik heb ook geen ervaring met ORM mappers in PHP en wil het daarom het liefst bij Zend houden om de leercurve niet te groot te maken.
In de zenddocumentatie wordt er wel over relaties gesproken maar daar wordt eigenlijk hetzelfde gedaan.
...