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
+
-1
-

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
+
+1
-

tohle nesouvisi s nette, ale se zaklady oop, ve staticke funkcni nemuzes pouzivat $this

kralik
Člen | 230
+
0
-

Ty jo, já jsem, ale trubka.

Tohle mě vůbec nenapadlo, hledal jsem větší botu.

Mooc díky.
Už to jede.

Tom