Wpis z mikrobloga

jak mogę ustawić w symfony żeby dwie różne aplikacje mające taki sam model korzystał z jednej wspólnej bazy, a pozostałe modele miały oddzielne bazy ? czyli np mama tabele users w bazadanych1 i obie moje aplikacje łączą się do tego bazadanych1 i przy tym mają też swoje bazadanych na pozostałe modele ?
chociaż w sumie tam również relacje będą, także chyba lepiej żeby aktualizacja/dodanie/usunięcie powodował też usunięcie w drugiej bazie i vice versa ? jak w takim razie tą drugą opcje zrobić ?
#php #symfony2 #symfony #webdev
  • 30
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Jurigag: boze drogi przestancie korzystac z modeli doctrineowych ( pewno o te Ci chodzi ) do operacji biznesowych, to jest #!$%@? rak :/

Ale odpowiadajac na pytanie - inne entity managery musza byc
  • Odpowiedz
@Avario: znaczy w sumie tutaj ogólnie zastosowałem "model" jak skrót myślowy, jako entity w bazie, załóżmy że chodzi mi o encje, jest to zwykła klasa która nic nie rozszerza takze model doctrineowy to nie jest

to jeszcze odpowiedź na drugie pytanie - lepiej zrobić jednak to rozdzielnie i aktualizacja/usunięcie/dodanie od razu zrobi to samo w drugiej bazie ?
  • Odpowiedz
@Jurigag: tak, encje doctrineowe. To jest ,,warstwa biznesowa" wg 99% programistow i te 99% potem pisze tak poronione aplikacje ze dupa boli potem utrzymywac.

Generalnie, ja mam tkaie podejście - nie używać relacji doctrineowych. Wszystkie encje ładowałem oddzielnie w osobnych repozytoriach, było łatwiej tym zarządzać.
  • Odpowiedz
@Avario: nie wiem, ja nie widzę problemu z ich zastosowaniem, przecież w doctrine masz to już wbudowane ładowanie encji w osobnych repozytoriach także nie wiem o co chodzi, to w obu bazach dbać o to żeby takie same dane były czy jednak zrobić to jako oddzielną bazę ? tylko jak wtedy relacje wyglądają w doctrine ?
  • Odpowiedz
@Jurigag: nie chodzi o doctrineowe repo tylko o własne domenowe repo. Generalnie robilismy tak jak pracowalem jeszcze z projektem w ktorym byly glownie encje doctrineowe - Kazda encja osobno, domenowe repo na to, bazowe repo doctrineowe przez kompozycje wstrzykniete i metody domenowe accessowaly generic repository w poszukiwaniu encji.
  • Odpowiedz
@Avario: po co tak komplikować życie ? :x co złego w doctrineowych repo ?

z tego co widzę to doctrine tak nie bardzo wspiera relacje między różnymi połączeniami(czemu to nie wiem, przecież to kwestia w zapytaniu dopisania prefiksu database...) ale trudno :x także zrobię chyba trzymanie tutaj i tutaj tego samego
  • Odpowiedz
@Jurigag: bo masz kontrole nad tym jak i skad sa pobierane dane.
Ponadto doctrinowe repo udostepnia Ci tylko generyczne metody, wiec zapomnij o przeszukiwaniu wg domenowych metod ( czytaj zawsze bedziez mial w kodzie findBy['status' => 200] zamiast np findAcceptedOrders() , a to powaznie rzutuje na jego jakość )
  • Odpowiedz
@Jurigag: bo dziedziczenie to również rak.
A tak konkretniej - dziedziczenie dwóch klas binduje je statycznie, nie powinniśmy tego robić chyba, że w szczególnych przypadkach, kiedy implementacje zupełnie nie są ze sobą związane i jesteśmy na 100000000000% pewni , że implementacja się nie zmieni [ to się rzadko , bardzo rzadko zdarza ] ( a i tak lepiej wtedy użyć kompozycji )
  • Odpowiedz
@Avario: jakoś bardzo ogromnej aplikacji nie mam, ale trochę już ona rozwijana jest i jeszcze nigdy nie były te repozytoria dla mnie problemem, gorzej że znajomy pisał zapytania zupełnie inaczej, raz tak, raz siak ale to już jego problem
  • Odpowiedz
@Jurigag: troche czytaj ile, rok? :D
Poza tym, przez problem rozumiemy tutaj fakt rozbicia wiedzy o produkcie, ktory predzej czy pozniej przekuwa sie na tak zwnay syf w kodzie. Tak sie dzieje z prawie kazdym projektem informatycznym. I tak powstaje kolejny projekt ,,legacy" xD
  • Odpowiedz
@Jurigag: nie az tak duzo, ale tez nie malo. I co, nie macie problemu w stylu, ze poprawiacie jedna rzecz i sie sypie co innego? Albo ze nie idzie zajarzyc o co chodzi w danym miejscu po jakims czasie? :>
  • Odpowiedz
@Jurigag: no to bardzo ciekawe, bo w kazdym duzym projekcie w ktorym bylem ( pare lat, programisci oryginalni albo sobie poszli albo nie dziela sie zbytnio wiedza ) przez wiele miesięcy następuje fragmentacja wiedzy i na dobra sprawe przez wiele miesięcy nikt nie bardzo wie jak wszystko dokladnie dziala i dlaczego tak dziala ;]
  • Odpowiedz
@Jurigag: nie da sie zrobić relacji do innej bazy danych (i nie wynika to z ograniczeń doctrine), jedyne co możesz zrobić to custom doctrine type który automatycznie zcastuje ci id na obiekt ale mimo to trzeba pamiętać o tym że taki obiekt może nie istnieć
  • Odpowiedz