Připojení 2 databází do 1 systému

jAkErCZ
Člen | 321
+
0
-

Čau kluci,
mám problém snažím se stále připojit moji apku na 2 databáze tu default to bere úplně v pohodě ale tu druhou prostě ne a ne za boha připojit proto se ptám tady :)

config.local

parameters:
    dbname: CustomerSystem # název databáze
    dbname2: CompanyCatalog

# Konfigurace databázové služby dále přístupné pomocí DI v rámci celé aplikace.
database:
    default:
        dsn: 'mysql:host=192.168.2.50;dbname=%dbname%'
        user: root
        password: root
        debugger: true
        options:
            lazy: yes

    db2:
        dsn: 'mysql:host=192.168.2.50;dbname=%dbname2%'
        user: root
        password: root
        debugger: true
        options:
            lazy: yes

config.neon

services:
	router: App\RouterFactory::createRouter # Nastavení routeru aplikace.
	authenticator: App\Model\UserManager # Nastavení přihlašování do aplikace.
	database: @database.default.context # Databáze Systému
	database2: @database.db2.context # Databáze IDnetwork

BaseManager

abstract class BaseManager extends Object
{
	/** @var Context Instance třídy pro práci s databází. */
	protected $database;
        protected $database2;

        /**
	 * Konstruktor s injektovanou třídou pro práci s databází.
	 * @param Context $database automaticky injektovaná třída pro práci s databází
	 */
	public function __construct(Context $database, Context $database2)
	{
		$this->database = $database;
                $this->database2 = $database2;
	}
}

CompanyManager

public function getCompanys()
	{
		return $this->database2->table(self::TABLE_NAME)->order(self::COLUMN_ID . ' DESC');
	}

Tak a teď by mě zajímalo co dělám špatně jelikož bych byl fakt rád kdyby mi fungovala ta funkce $this->database2

Předem všem děkuji za pomoc

jAk3r

Zuben45
Člen | 268
+
+1
-

Je jasné, že property database2 ti vrací stejnou databázi, jelikož v konstruktoru na obě použiješ tu defaultní.

Řešil bych to vytvořením třídy pro každou databázi, a ty pak použil pro autowiring ;)

Popřípadě z abstraktní třídy udělat normální, a dát jí ty databáze v konfigu.

Editoval Zuben45 (12. 5. 2017 22:31)

CZechBoY
Člen | 3608
+
+2
-

Jeste by slo pouzit decorator a nastavit to rucne pres setter.