NDB pripojenie k dvom databázam
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- sepo
- Člen | 69
Ako na pripojenie NDB k dvom databázam ?
PHP 7.0.5
Nette 2.3.10
Server Microsoft-IIS/7.5
config.neon
database:
web:
dsn: 'mysql:host=%web.host%;dbname=%web.database%'
user: %web.username%
password: %web.password%
debugger: true
explain: true
autowired: true
reflection: discovered
msi:
dsn: "sqlsrv:server=10.168.136.213;database=msi"
user: %msi.username%
password: %msi.password%
debugger: true
explain: true
autowired: false
services:
router: App\RouterFactory::createRouter
- App\Model\BaseModel(@database.web, @database.msi)
- App\Model\LogUsersHistoryModel
BaseModel.php
<?php
namespace App\Model;
use Nette;
class BaseModel extends Nette\Object
{
public $dbWeb;
public $dbMsi;
public function __construct(Nette\Database\Context $dbWeb, Nette\Database\Context $dbMsi)
{
$this->dbWeb = $dbWeb;
$this->dbMsi = $dbMsi;
}
}
V $this->dbMsi stále dostanem len prvú tú prvú "@database.web" (autowirovanú).

- sepo
- Člen | 69
CZechBoY napsal(a):
Měl bys uvést ještě
.context.
David Matějka napsal(a):
ty to nastavujes sluzbe BaseModel, nikoliv te LogUsersHistoryModel
takže by to malo byť :
services:
router: App\RouterFactory::createRouter
#- App\Model\BaseModel(@database.web.context, @database.msi.context)
- App\Model\LogUsersHistoryModel(@database.web.context, @database.msi.context)
- App\Model\Potomok2BaseModelu(@database.web.context, @database.msi.context)
- App\Model\Potomok3BaseModelu(@database.web.context, @database.msi.context)
u každého potomka BaseModel-u predať context ?
dík

- Unlink
- Člen | 298
Ono by sa to dalo trochu zjednodušiť pomocou decoratora, aj keď to nieje moc čisté riešene.
class BaseModel extends Nette\Object
{
public $dbWeb;
public $dbMsi;
public function injectDbContexts(Nette\Database\Context $dbWeb, Nette\Database\Context $dbMsi)
{
$this->dbWeb = $dbWeb;
$this->dbMsi = $dbMsi;
}
}
decorator:
App\Model\BaseModel:
setup:
- injectDbContexts(@database.web.context, @database.msi.context)
services:
router: App\RouterFactory::createRouter
- App\Model\LogUsersHistoryModel
- App\Model\Potomok2BaseModelu
- App\Model\Potomok3BaseModelu