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 | 455
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)