Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Modelowanie modelów
CuteOne
post
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)
  1. $query = $db -> select() -> setIntegrityCheck(false);
  2. $query -> from(array('u'=>'user'), array())
  3. -> joinLeft(array('ud'=>'user_data'), 'ud.user_id = u.user_id')
  4. -> joinLeft(array('ude'=>'user_data_ext'), 'ude.user_id = u.user_id', array())
  5. -> joinLeft(array('um'=>'user_mails'), 'um.user_id = ud.id')
  6. -> where("u.user_id = ?", $id);
  7.  
  8. $users = $db -> fetchAll($query);

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
Go to the top of the page
+Quote Post
Fluke
post
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.
Go to the top of the page
+Quote Post
CuteOne
post
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ń ;/
Go to the top of the page
+Quote Post
melkorm
post
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
Go to the top of the page
+Quote Post
CuteOne
post
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 ?
Go to the top of the page
+Quote Post
viking
post
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) ).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 17:19