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