Kdyby\Doctrine dynamické nastavení conection pro EM
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- marist
 - Člen | 2
 
Zdravím,
na projektu máme databázi rozdělenou do shardů podle uživatelů. Potřebuji na začátku dotazu nastavit připojení pro Doctrine EM na základě informací co si vytáhnu z master db (k tomu nepotřebuju Doctrine), bohužel si nevím rady jak tam to nastavení dostat. Napadá někoho jak tuto konfiguraci provést?
Díky

- marist
 - Člen | 2
 
Tak zatím jsem to vyřešil přes reflexi takto:
$connection = $container->getService('doctrine.default.connection');
$connectionParams = $connection->getParams();
// Přeskočeno nastavení požadovaných parametrů do $connectionParams...
$property = (new \Nette\Reflection\ClassType(\Doctrine\DBAL\Connection::class))->getProperty('_params');
$property->setAccessible(TRUE);
$property->setValue($connection, $connectionParams);
Vůbec se mi nelíbí do toho takhle přes reflexi šahat ale nenapadá mě lepší způsob.

- Martk
 - Člen | 661
 
Config:
services:
	- ConnectionSelector
doctrine:
	dbname: @ConnectionSelector::getDbName()
a v servisní třídě vrátíš jméno databáze nebo cokoliv.
class ConnectionSelector {
	public function __construct() {
		// Initializace databaze
	}
	public function getDbName() {
		// ...
	}
}
					Editoval Martk (16. 2. 2017 14:07)