![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam mały problem z zaprojektowaniem modelów bazy danych. Tak standardowo wyglądają zapytania, których dotychczas używałem (szybkie w pisaniu, toporne w edycji)
Powyższy przykład zawiera relacje jeden do jednego i jeden do wielu. W jaki sposób za pomocą mapowania przekształcić powyższy przykład w prawidłowy zapis opisany tutaj ? Dodatkowy problem to n+1 zapytań do bazy gdy używam relacji przedstawionych w przykładzie z powyższego linku - czy da się to jakoś obejść? Ten post edytował CuteOne 29.11.2012, 11:35:59 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chcesz to jakoś uprościć(co wydaje mi się bez sensu bo jest to prawidłowe) musisz wykonać instrukcję SELECT która pobierze 1 rekord a następnie w pętli będziesz szukał za pomocą instrukcji findDependentRowset() bądź findManyToManyRowset(). W ten sposób możesz pobrać kolejne dane w relacji.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedź (IMG:style_emoticons/default/smile.gif) Problem polega na tym, że tego tupu zapytania nie pasują mi do mapowania bazy, innymi słowy - po cholerę mam tworzyć mappery(referencedMap i dependentTables) oraz entity skoro będą bezużyteczne w 90% przypadków. Drugi problem leży w dopisywaniu zmian za pomocą pluginów (o co chodzi z pluginami opisałem tutaj). W tym momencie niemożliwe jest nadpisywania/dopisywanie zmian bez zmian w treści zapytania lub nadpisywaniu samej metody w modelu.
Eh gdyby istniała możliwość pobierania danych tak aby Zend tworzył złożone zapytanie na podstawie samego referencedMap a nie n+1 zapytań ;/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Mapowanie w Zendzie ssie i nic na to nie poradzisz, albo piszesz zapytania z palca (tak jak masz w przykładzie który wkleiłeś) (co dla mnie jest okej, wolę to nawet niż korzystać z Doctrine 2 gdzie przy teraźniejszym projekcie mnie czasami *** strzela), lub możesz podpiąć pod Zend'a DC2 i tam masz to całe mapowanie załatwione w pewnym sensie (IMG:style_emoticons/default/smile.gif)
PS. Zresztą, ZF jest w tym momencie trochę ... stary i uporczywy, dlaczego nie pomyślisz na przesiadką na ZF2 lub SF2 (gdzie jest DC2 i tak ;p). Ten post edytował melkorm 29.11.2012, 18:12:17 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
W tym momencie przejście na SF2 lub Doctrine 2 nie jest możliwe (nie ja o tym decyduję). Dlatego szukam rozwiązania do ZF1, które w logiczny sposób nakreśli w jaki sposób pobierać dane bez pisania zapytań z palca (IMG:style_emoticons/default/smile.gif)
Hmm, może jest jakiś sposób spoza obszarów samego Zenda(pomijając ORM'y), który będzie elastyczny na zmiany i intuicyjny w tworzeniu ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mnie też zawsze taki zapis bardziej pasował niż D2 gdzie nawet edytor sensownie nie jest w stanie podpowiedzieć składni. Raz mi się zdarzyło z tego mapowania korzystać ale dużo bardziej intuicyjne jest właśnie to co napisałeś. A może sobie wykorzystasz Zend\Db z ZF2? Tam to w pewnym sensie lepiej rozwiązali (jak kto lubi (IMG:style_emoticons/default/wink.gif) ).
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 22:41 |