Nette + Doctrine2 a víc než jedna databáze

- theacastus
- Člen | 81
Ahoj,
chtěl bych se zeptat zda je možné popř. jestli má někdo zkušenost s prací s Nette, Doctrine2 a minimálně 2 databázemi? Já bych jich potřeboval propojit celkem 5…
Nebo je to možné udělat s Nette/Database ? Popř. je na to nějaká jiná cool fičura?
Díky moc
K čemu to potřebuju: moje oblíbená MMO hra z roku 2007 má trochu starší model a nechce se mi předělávat komplet celá hra, stačí se jen hrabat v jádře a clientu a opravovat bugy. Abych to dělal odznova se mi fakt nechce, i když by to hře prospělo a ideální by byl port na Unreal4, ale měl to být projekt do volného času a ne full-time job :D

- Jan Endel
- Člen | 1016
pokud používáš Kdyby/Doctrine, tak je to celkem jednoduché.
Stačí mít dvě vydefinované connection:
doctrine:
default:
host: localhost
user: user1
password: password1
dbname: database1
secondConfig:
host: localhost
user: user2
password: password2
dbname: database2
defaultně se všude bude autowirovat entityManager a podobné služby s configem default, pokud chceš v neonu pak druhou conneciton tak třeba takhle:
services:
- Baz/FooBar(@doctrine.secondConfig.entityManager)
případně přímo v PHP:
use Kdyby\Doctrine\Registry;
class Foo
{
public function __construct(Registry $registry)
{
$em = $registry->getManager('secondConfig');
}
}
update schematu přes konzoli pak takto:
php app/console orm:schema:update --em=secondConfig --dump-sql

- Petr Parolek
- Člen | 458
Ahoj,
zkouším to podle první varianty, ale příkaz php www/index.php orm:schema:update –force mi háže vše do defaltní databáze namísto do druhé, ale nette pracuje správně – tj. z druhé tabulky.
Kde je zrada prosím?

- Oli
- Člen | 1215
Psal jsem z mobilu, proto jsem psal jen tak krátce.
Buď jsem něco přehlédl, nebo ty jsi to tam opravdu zapomněl zavolat. :)
Podle mě příkaz
php app/console orm:schema:update --dump-sql pracuje
s defaultní databází a příkaz
php app/console orm:schema:update --em=secondConfig --dump-sql
s databází v secondConfig.
Takhle to funguje z konzole. Pokud jsi v aplikaci, tak se to řídí podle
toho, jaký entity manager si do service předáš. Takže pokud si předáváš
vždy tu druhou databázi do service, tak to vždy použije
secondConfig. No ale pak musíš zavolat
--em=secondConfig i v konzoli.
Něco jsem špatně pochopil?
Editoval Oli (20. 3. 2017 19:40)