Připojení 2 databází do 1 systému
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jAkErCZ
- Člen | 322
Č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
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)