Dva Modely a dvě databáze, Nette 2.3.2
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- kralik
- Člen | 230
Ahoj,
snažím se poprat se s připojením ke dvou databázím skrze dva modely.
Bohužel se mi to nedaří realizovat.
Prosím pomozte.
Model Main připojení do DB MySQL
Model MSSQL připojení do DB MSSQL
Zkouším to takto
config.neon
<?php
nette:
application:
errorPresenter: Error
mapping:
*: App\*Module\Presenters\*Presenter
database:
db_msde:
dsn: 'sqlsrv:Server=192.168.3.10;Database=STRAVAMSDE'
user: drozd
password: 'dr0zd'
db_gastro:
dsn: 'mysql:host=localhost;dbname=gastrojh'
user: vyvoj
password: vyvoj
services:
# authenticator: UserManager
- App\Model\UserManager( @nette.database.db_gastro.context )
- App\RouterFactory
router: @App\RouterFactory::createRouter
# - App\Model\Main(@database.db_gastro.context)
- App\Model\Main(@nette.database.db_gastro.context)
- App\Model\MSSQL(@nette.database.db_msde.context)
?>
BasePresenter:
<?php
abstract class BasePresenter extends \Nette\Application\UI\Presenter
{
/** @var App\Model\Main */
protected $mainModel;
/** @var App\Model\MSSQL */
protected $MSSQL;
public function injectMain(\App\Model\Main $mainModel) {
$this->mainModel = $mainModel;
}
public function injectMSSQL(\App\Model\MSSQL $MSSQL) {
$this->MSSQL = $MSSQL;
}
?>
Model Main
<?php
namespace App\Model;
use Nette;
class Main extends Nette\Object
{
/** @var Nette\Database\Context */
private $connection;
public function __construct(Nette\Database\Context $db)
{
$this->connection = $db;
}
public static function getMenu($role) {
$dat = $this->connection->table('Menu')->where('role',$role)->fetchAll();
return ($dat) ? $dat : NULL;
}
?>
Model MSSQL
<?php
<?php
namespace App\Model;
use Nette;
class MSSQL extends Nette\Object
{
/** @var Nette\Database\Context */
private $connection;
public function __construct(Nette\Database\Context $connection)
{
$this->connection = $connection;
}
?>
Když zkusím v Presenteru
$this->mainModel->getMenu(‚member‘);
Obdržím chybu:
<?php
Fatal Error
Using $this when not in object context search►
právě na řádku s $this->connection->table('Menu')->where('role',$role)->fetchAll();
?>
Předem moc díky
Tom
- David Matějka
- Moderator | 6445
tohle nesouvisi s nette, ale se zaklady oop, ve staticke funkcni nemuzes
pouzivat $this