Co je DiscoveryReflection?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
josef.sabl
Člen | 153
+
0
-

Zde

https://forum.nette.org/…-predstaveni?p=2

Se píše o DiscoveryReflection, ale nejsem schopen nikde najít, co to je.

Díky

Editoval josef.sabl (12. 12. 2011 17:59)

hrach
Člen | 1838
+
0
-

Vytahne si z db podle fereign keys vazby a podle toho pak umi udelat join.

josef.sabl
Člen | 153
+
0
-

Tak už vím. Viz. nová verze 2.0 beta z 8.12. a její config.neon.

klip
Člen | 11
+
0
-

Jen poznámka: právě si jako Nette nováček hraju se sandboxem a protože se v config.neon v nové verzi nastavuje implementace reflexe DiscoveryReflection, tak sem asi hodinu řešil, proč Nette\Connection\Database volá dotaz: EXPLAIN users, když v PostgreSQL se takhle metadata nezjišťujou, a jaktože mi to dřív fungovalo.

Nakonec sem si všiml právě nastavení v config.neon – je u mě trochu nešťastně za hranicí okna IDE, protože je řádek přiliš dlouhý.
Viz https://github.com/…5974da37de20#…

Změnil sem si to tedy na ConventionalReflection() a arguments sem si rozložil na více řádků, aby to bylo přehlednější:

		database:
			class: Nette\Database\Connection
			arguments: ['%database.driver%:host=%database.host%;dbname=%database.dbname%',
%database.user%, %database.password%, ...,
Nette\Database\Reflection\ConventionalReflection()]

Takhle mi to na PostgreSQL zase funguje.

A jeden tip na zdroj pro případné zvědavce, kteří se chtějí dozvědět, jak získávat meta informace z PostgreSQL databáze: http://www.alberton.info/…ta_info.html

Editoval klip (22. 12. 2011 1:27)

David Grudl
Nette Core | 8218
+
0
-

Díky, řádek jsem upravil. Reflexe se bude zjišťovat na úrovni driveru, takže bude fungovat i pro PostgreSQL. Budu rád, když to potom otestuješ.