🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
2 messages
2 total messages Started by Marek S Fri, 12 Jul 2019 20:17
Symfony 4 / Doctrine - dwa entity managers na jednej bazie? Jak?
#232462
Author: Marek S
Date: Fri, 12 Jul 2019 20:17
34 lines
2541 bytes
Witam,

Buduje aplikację, która będzie miała część administracyjną i część 
publiczną (CMS). Z czasem można oczekiwać, że dojdzie jeszcze kolejny 
wariant. Moim celem jest uporządkowanie struktur danych projektu aby nie 
mieszały się ze sobą kontrolery itd. Wymyśliłem, że  każdy katalog typu 
COntroller, Repository, templates itd będzie miał podkatalogi Admin i 
Public. Tam będziemy trzymać pliki powiązane z daną sekcją.

I fajnie. Nawet działa. Ale... co z bazą danych? Ją też chcę 
uporządkować. Z pewnością nie chcę mieszać tabel administracyjnych z 
publicznymi i innymi. No więc wymyśliłem, że wrzucę tabele 
administracyjne do przestrzeni nazw "admin" a publiczne do "public". To 
też się udało.

Ale jak wygenerować migrację dla Entities np. "admin"? Moim celem jest 
przenaszalność części administracyjnej do innych projektów. Znalazłem 
odpowiedź w dokumentacji iż należy stworzyć oddzielne entity managery 
dla każdej przestrzeni nazw tabel. Wtedy będzie można generować migracje 
dla każdej z tych sekcji niezależnie.

Fajnie, ale gdzie nie poczytam, to dotyczy to przypadku kiedy mamy różne 
bazy. A ja mam jedną bazę z dwoma lub więcej przestrzeniami nazw i chcę 
w dodatku budować relacje między tabelami w Doctrine z każdej z 
przestrzeni nazw. W czystym SQL to żaden problem. W dokumentacji Symfony 
nie opisują sytuacji jednej bazy i dwóch entity managerów. Piszą tylko o 
tym, że jeśli zrobimy dwa połączenia (nawet do jednej bazy), to koniec z 
relacjami. Więc chcę mieć jedno połączenie.

Jak zatem rozseparować migracje dla poszczególnych przestrzeni?

-- 
Pozdrawiam,
Marek
Re: Symfony 4 / Doctrine - dwa entity managers na jednej bazie? Jak?
#232464
Author: Marek S
Date: Fri, 12 Jul 2019 23:43
26 lines
2049 bytes
W dniu 2019-07-12 o 22:17, Marek S pisze:
> 
> Jak zatem rozseparować migracje dla poszczególnych przestrzeni?
> 

Ups, właśnie analizowałem kod źródłowy:
https://github.com/doctrine/DoctrineMigrationsBundle/pull/46/commits/e86c137c491761543f6ae7b04537d4aebd1e4e43

Niby ktoś wdrożył poprawkę w 2013r w migracjach by uwzględniały entity 
managery ale w bieżącej wersji Doctrine poprawka nie występuje. Tak więc 
generując migracje z entities umieszczonych w różnych folderach, 
otrzymamy burdel w migracjach. Jedynym wyjściem wydaje się być 
tymczasowe usunięcie wszystkich podfolderów w Entities (np. gdy mamy 
Admin i Public - usuwamy Public) z wyjątkiem interesującego nas i wtedy 
generujemy migracje.

Jak tak patrzę na współczesne frameworki PHP, to bubel pogania bubla. 
Czy to Yii, Laravel lub Symfony - jedna wielka kicha dedykowana 
kichowatemu MySQL (kompatybilność z resztą baz problematyczna). Banalne 
rzeczy stają się wyzwaniem na tydzień walki, bo dokumentacji też nikomu 
stworzyć się nie chciało więc trzeba w kodzie grzebać. Potem i tak 
okazuje się, że "to" nie zadziała.

-- 
Pozdrawiam,
Marek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads