Pripojeni k databazi pomoci NotORM

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

Dobry den,

podle navodu zde: https://pla.nette.org/…cy-injection (a pote i jinych zde na foru) se snazim pripojit k mysql databazi a pouzivat NotORM. Pouzivam Nette 2.1.0 a vyhazuje mi to vyjimku:
Service ‚database‘: Reference to missing service of type \PDO.
nezda se mu radek: database: NotORM(@\PDO, NULL, @dbcache)

nevite kde muze byt problem?

dekuji!

Tomáš Votruba
Moderator | 1114
+
0
-

Ahoj, návod není aktuální.

Zkus přidat PDO do services:

services:
	- PDO
	database: NotORM(@\PDO, NULL, @dbcache)

Editoval Tomáš Votruba (24. 1. 2014 16:48)

41095
Člen | 6
+
0
-

dekuju,

pak to bohuzel hazi:
Nette\DI\ServiceCreationException
Service ‚24_PDO‘: Parameter $dsn in PDO::__construct() has no type hint, so its value must be specified.

tak jsem si to upravil na:

- services:
	- PDO("mysql:host=localhost;dbname=databaze", "root", "")

a to jiz funguje :) diky.

petr.pavel
Člen | 535
+
0
-

Právě se s tím mořím. Používám NotORM nad PDO z NDB, aby mi fungoval panel v debug baru.
Po přechodu na 2.1.1 přestal fungovat starý fígl předání PDO, protože NDB už není potomek PDO.

Context ale nadále obsahuje createServiceNette__database__default(), které vrací Nette\Database\Connection, které příhodně obsahuje metodu getPdo(). Takže se snažím nad NDB Connection volat getPdo() přímo v definici v config.neon. A nedaří se.

services:
	- NotORM(@nette::database->pdo)

mi hodí chybu
„Service accessing via nette->database->pdo is deprecated, use ‚nette.database->pdo‘.“

Jenže když teda napíšu - NotORM(nette.database->pdo), tak to vykape na „string given“.

- NotORM(@nette.database->pdo) zase skončí s chybou „Reference to missing service ‚nette.database->pdo‘. “.

Zkoušel jsem i @nette.database.default (a různé mutace).

Podotýkám, že je fuk, jestli píšu ->pdo nebo ->getPdo() nebo cokoliv jiného. Aktuální problém je, že to nenajde createServiceNette__database__default().

Dokumentaci ke konfiguraci jsem přečetl tam i zpátky, googloval jak zběsilej. Bohužel, nepřišel jsem na způsob, jak vyhledat „nette.database“ jako string s tečkou, takže se prodírám spoustou falešných výsledků.

Koukal jsem do testů Nette na GitHubu, nic s odkazováním na nette.database tam není (hledal jsem v
nette / tests / Nette / DI / files). Mimochodem, nepřišel jsem na to, jak si Nettí testy stáhnout k sobě do počítače. Composer, GitHub „download as zip“ ani stažený archiv z https://nette.org/cs/packages je neobsahuje).

Můžete mi, prosím, poradit, jak správně napsat ten odkaz na getPdo() a kde si mám co přečíst, abych pořádně pochopil syntaxi odkazů na metody/služby v config.neon?

Dík!

Editoval petr.pavel (7. 3. 2014 21:18)

petr.pavel
Člen | 535
+
+1
-

Cha, tohle funguje:

- NotORM(@Nette\Database\Connection::pdo)

Nicméně i tak bych byl moc rád, kdyby mě někdo odkázal na nějaké čtení o odkazování na třídy, objekty vlastní i interní přes config.neon. Plavu v tom a už mě to štve.