![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 500 Pomógł: 1 Dołączył: 29.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cześć, mam taki problem, że udostępniam aplikację napisaną w symfony pod różnymi domenami. Muszę teraz tą aplikację przerobić tak aby w zależności od domeny łączyło z odpowiednią bazą danych.
Od razu napiszę, że http://symfony.com/doc/current/doctrine/mu...y_managers.html odpada. Nie chcę dodawać 100 połączeń w config.yml Pomysł mój jest taki aby istniała baza "matka" która będzie zawierała połączenia do pozostałych baz. Czyli na samym początku z bazy matki pobieram dane do połączenia a potem zastępuje to obecne połączenie nowym. Pomysł chyba dobry ale łatwo napisać a trudniej zrobić (IMG:style_emoticons/default/wink.gif) Macie może jakieś pomysły jak to ogarnąć? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Tak czy inaczej będziesz musiał zdefiniować:
- n połączeń do baz (doctrine/dbal/connections) - n entity managerów (doctrine/orm/entity_managers) Do tego potrzebny będzie co najmniej jeden serwis do rozpoznawania domen i kolejny do wyboru połączenia i entity managera. Poza tym kawałek kodu, który to wszystko połączy w jedno. Bo skoro używasz różnych baz, to pewnie nie dlatego, że są one identyczne a przecież baza musi pasować do encji, inaczej zaraz będziesz miał sytuację, że w bazie jest tabela a encji nie ma lub odwrotnie. Cytat Używałem coś bardzo podobnego do tego: https://stackoverflow.com/questions/1510873...585284#24585284 Cytat kiedyś połączenie do bazy było nawiązywane dość późno, od wersji (chyba 3) to się zmieniło i tego typu proteza może powodować liczne problemy z wydajnością, meta danymi bazy, cache, debugerem, działaniem w trybie klienta i wiele innych.Dużo lepiej jest przesłonić odpowiednią metodę w bootstrapie aplikacji, dobrym momentem wydaje się inicjalizacja kontenera - ale lepiej przed tworzeniem cache'u. Znalazłem też w Doctrine coś takiego: https://www.doctrine-project.org/projects/d...l#wrapper-class Tylko nigdy tego nie używałem i nie wiem nawet, czy da się to jakoś połączyć z entity managerem - może i się da i tu widzę pole do popisu. I opieram się o Symfony3, nie wiem jak to jest w Symfony4, prawdopodobnie podobnie a może dodali odpowiedni event (chociaż go nie widzę). Kombinuj i daj znać, czy coś się udało. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 12:21 |