Nette 2.3: konfigurace databáze s vlastní ConnectionFactory

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Eda
Backer | 220
+
0
-

Ahoj.

Mám dotaz ohledně konfigurace databáze v Nette 2.3, pokud využívám vlastní ConnectionFactory. Zatím mám v sekci servcices tohle:

database.default.connection: @connectionFactory::create
database.default.structure: Nette\Database\Structure(@database.default.connection, ...)
database.default.conventions: Nette\Database\Conventions\DiscoveredConventions(@database.default.structure)
database.default.context: \Nette\Database\Context(@database.default.connection, @database.default.structure, @database.default.conventions, ...)

A funguje to. Ale s tím zápisem nejsem moc spokojený, zapisuju do něj totiž to, co DatabaseExtension dělá jinak samo. Nedá se nějakým způsobem přepsat jen connection? Zkoušel jsem uvést jen řádek:

database.default.connection: @connectionFactory::create

Ale to bohužel nefunguje.
Nemáte někdo nějaký tip, jak ten zápis zjednodušit a využít tak potenciál DatabaseExtension?

Díky :-)

David Grudl
Nette Core | 8172
+
0
-

Napiš jen database.default. Ale na to by se asi dal přidat alias.

Eda
Backer | 220
+
0
-

Tohle jsem zkoušel, ale nefungovalo to. Teď jsem se ale podrobněji díval do kódu DatabaseExtension a našel jsem tuhle podmínku: https://github.com/…xtension.php#L53

V configu v sekci database jsem totiž předtím měl jenom tohle (parametry databáze by tam byly zbytečné, protože o připojení se stará ConnectionFactory a ta si je bere odjinud):

database:
	default:

Ale tím pádem uspěla ta podmínka, která přidávání defaultní databáze do konfigu přerušila.
Takže jsem tam „aspoň něco“ přidal:

database:
	default:
		autowired: true

A už to krásně funguje.

A díky za ten alias, to byla rychlost :-)

David Grudl
Nette Core | 8172
+
0
-

Aha. No to spojení nevytváří, pokud tam není žádný údaj. Vlastně jsi tam mohl uvést cokoliv, když si to poté přepíšeš.

Eda
Backer | 220
+
0
-

Ještě jedna drobnost: když to zaregistruji tímto způsobem:

database:
	default:
		autowired: true
services:
	database.default: @connectionFactory::create

Vidím v Tracy-baru dva stejné panely databáze: http://awesomescreenshot.com/03d4haynfb

Editoval Eda (25. 2. 2015 0:19)