Doctrine vytváření entit napříč databázemi

kleinpetr
Člen | 480
+
0
-

Zdravím,

chci se zeptat zda se dá nějak korektně vyřešit situace kdy mám nějakou databázi, kde jsou nějaké katalogové tabulky, např. tabulka country.

Nyní potřebuji vytvořit zcela nový projekt i databázi, ale rád bych využil tabulku country z jiné databáze. Je to možné nějak implementovat do doctrine aby fungovali migrace a vše kolem?

Díky za info.

MajklNajt
Člen | 498
+
+1
-

Ahoj, ak som správne pochopil tvoj cieľ, vidím 2 možnosti:

  1. pokiaľ si spokojný so štruktúrou existujúcej tabuľky, jednoducho ju skopíruj a entitu namapuj podľa tabuľky (názov tabuľky zadefinuješ anotáciou @ORM\Table(name="nazov_tabulky"), jednotlivé stĺpce @ORM\Column(type="string", name="nazov_stlpca")
  2. ak chceš použiť iba dáta, vytvor si triedu entity podľa svojej potreby, napíš si nejaký jednoduchý skript, v ktorom si napr. cez \Nette\Database\Context vytiahneš dáta z ktorých si vytvoríš konkrétne entity…

Editoval MajklNajt (7. 11. 2018 14:21)

kleinpetr
Člen | 480
+
0
-

MajklNajt napsal(a):

Ahoj, ak som správne pochopil tvoj cieľ, vidím 2 možnosti:

  1. pokiaľ si spokojný so štruktúrou existujúcej tabuľky, jednoducho ju skopíruj a entitu namapuj podľa tabuľky (názov tabuľky zadefinuješ anotáciou @ORM\Table(name="nazov_tabulky"), jednotlivé stĺpce @ORM\Column(type="string", name="nazov_stlpca")
  2. ak chceš použiť iba dáta, vytvor si triedu entity podľa svojej potreby, napíš si nejaký jednoduchý skript, v ktorom si napr. cez \Nette\Database\Context vytiahneš dáta z ktorých si vytvoríš konkrétne entity…

No jde mi hlavně o data, jelikož ta tabulka obsahuje pár stovek tisíc záznámů, tak mi přijde zbytečné ji mít duplicitně např. v 8mi databázích, když jsou data konstatní a načítají se přes api.

Napojit Nette/Database na centrální databázi a udělat si nějakou vlastní entity zní asi jako nejjednodušší řešení.

Díky.

Jan Endel
Člen | 1016
+
+1
-

Není problém mít v aplikaci dva entity managery, pro každou databázi jeden. více napoví v Dokumentaci.

MajklNajt
Člen | 498
+
0
-

@kleinpetr tak predsa som to pochopil ináč – ty potrebuješ databázu iba zdieľať medzi viacerými projektami, ja som písal odpoveď na to, ako to skopírovať…

@JanEndel mne $em->getRepository() nedovolí druhý argument, nebude to teda feature iba na Symfony?

Jan Endel
Člen | 1016
+
0
-

Ano, protože se už ptáš nad konkrétním entity managerem, který by definition pracuje už jen s jednou databází.

Musíš si dát do dané třídy ten druhý, pokud s ním chceš pracovat.

kleinpetr
Člen | 480
+
0
-

@JanEndel Můžeš to trochu rozvést?

Akorát jak to bude fungovat když upravím entitu v jednom projektu a spustím migraci, a poté updatnu entitu i v druhém projektu. Nebude s tím mít problém?

Díky