Přístup k jiné databázy z presenteru
- spix
- Člen | 7
Zdravím, nikde jsem to tu nenašel tak píšu sem.
Když používám 2+ databází, tak:
- Jak to mám zapsat v configu?
Momentálně:
nette:
database:
dsn: 'mysql:host=localhost;dbname=xxx'
user: 'xxx'
password: 'xxx'
- Jak k nim přistupovat v presenteru
Něco na způsob:
if(x == y) mysql_select_db('druha_databaze');
Díky, spix
Editoval spix (27. 11. 2012 14:05)
- leninzprahy
- Člen | 150
v cofigu to může vypadat třeba takhle
common:
parameters:
database:
default:
driver: mysql
host: *****
dbname: *****
user: *****
password: *****
druha:
driver: mysql
host: *****
dbname: *****
user: *****
password: *****
nette:
database:
default:
dsn: '%database.default.driver%:host=%database.default.host%;dbname=%database.default.dbname%'
user: %database.default.user%
password: %database.default.password%
druha:
dsn: '%database.druha.driver%:host=%database.druha.host%;dbname=%database.druha.dbname%'
user: %database.druha.user%
password: %database.druha.password%
services:
defaultDb: @nette.database.default
druhaDb: @nette.database.druha
v presenteru pak
$this->getContext()->defaultDb->table....
$this->getContext()->druhaDb->table....
pokud by jsi to chtěl injectovat, bylo by potřeba na to napsat továrnu, v tom případě ale záleží, kterou verzi nette používáš, protože se to teď mění/vyvíjí
- leninzprahy
- Člen | 150
nechtěl jsem to zbytečně komplikovat, když
spix napsal(a):
…
- Jak k nim přistupovat v presenteru
Něco na způsob:
if(x == y) mysql_select_db('druha_databaze');
:)
- mildabre
- Člen | 62
enumag napsal(a):
Dodám, že $this->getContext() bys neměl používat, takže je lepší si v configu zaregistrovat ještě nějaký model, kterému předáš @nette.database.druha jako Connection a tento model si pak injectneš do presenteru. Problém tohoto postupu je, že to připojení není lazy.
V tutoriálu pro začátečníky Nette je v každém presenteru použit právě ten $this->context pro deklarování závislostí presenteru ze služeb v configu takže bych Tě chtěl požádat, zda by Jsi Ty či někdo jiný blíže nevysvětlil jak to bylo míněno, že by se nemělo používat $this->getContext().
Editoval mildabre (11. 12. 2012 21:05)