Nepochopil jsem použití dibi v modelech

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

Ahoj.
Tak nějak jsem přišel k Nette ani nevím jak. Hodili mě do vody.
Potřebuji upravit přihlášení uživatelů, kteří jsou uložení v DB WordPressu tak, aby to fungovalo na Nette.

Prakticky potřebuji napojit do Nette druhou DB, která ukazuje do WordPressu.
Nevím jak to udělat.

Nette: version 2.0-beta
PHP: 5.4.7
Dibi: 1.5

Po předchůdci jsem zdědil bootstrap.php, kde napojuje dibi jako statický objekt:
// Connection to database
dibi::connect($container->params[‚database‘]);

Potom tam mám Authenticator UsersModel a v něm je toto:
$row = dibi::query( „SELECT * FROM users WHERE username = %s“, $username)->fetch();

Už několik dní čtu návody v dokumentaci a čím dál tím více se do toho zamotávám … Modely, Presentery, Repository, Viewery… hlava mi z toho jde kolem.
Asi by to chtělo začít v klidu od začátku, ale bohužel nemám moc čas, tak se snažím tím nějak prokousat.

Můžete mi pomoct?
Jak dostat do UsersModel další databázi, abych mohl načíst data pro validaci z jiné databáze?
Něco jako:
$row = dibi2::query( „SELECT * FROM wp_users WHERE username = %s“, $username)->fetch();

Děkuju.
T.

Filip Procházka
Moderator | 4668
+
0
-

Třeba ti pomůže tohle?

Tulen22
Člen | 5
+
0
-

Ahoj.
Díky za reakci.
Mám starou aplikaci, tak mě zaujalo současně používat statický model a servisu.
Kdybych to rozchodil, tak bych mohl jednoduše přidat další databázi jako další službu.
Nicméně, stačilo, abych do config.neon v části services vložil:

connection:
    class: DibiConnection
    factory: dibi::connect(%database%)
    run: TRUE

… a šlo to do kopru.
Zkusím se s tím ještě poprat, ale quickwin se bohužel nedostavil :(

crempa
Člen | 198
+
0
-

Filip Procházka napsal(a):

Třeba ti pomůže tohle?

jen bych rád upozornil, že v poslední kombinaci nette 2.1 a dibi zdá se není funkční

$this->context->dibi->connection... //Nette\DI\MissingServiceException (Service 'dibi' not found.)

je nutné použít

$this->context->getByType('DibiConnection',true)...

nevím zda chyba nebo vlastnost, přišel jsem na to defacto náhodou, protože všude si nechávám injectovat DibiConnection automaticky na základě typu

Jan Tvrdík
Nette guru | 2595
+
0
-

@crempa: Hádám, že bude fungovat něco jako

$this->context->{'dibi.connection'}
Tulen22
Člen | 5
+
0
-

@Jan Tvrdík: Díky za pomoc, pragratické odkazy zafungovaly.