Pripojeni k databazi pomoci NotORM
- 41095
- Člen | 6
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
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
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
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
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.