Nette\Database – table – načtení z jiné databáze
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- fendrychl
- Člen | 2
Ahoj,
mám klasicky nakonfigurovanou jednu Nette\Database a v jedné části kódu potřebuji pracovat s tabulkou v jiné databázi. Používal jsem:
$db->table("databaze.tabulka");
To dříve fungovalo skvěle, ale po aktualizaci (momentálně na nejnovější 2.3.8) to bohužel přestalo fungovat – nyní hlásí, že taková tabulka neexistuje. Dopídil jsem se, že je to způsobené touto změnou: https://github.com/…69ca1ef2595a#…
Je to chyba a měl by být takový zápis podporovaný nebo to ohýbám k něčemu, k čemu to není určeno? :)
- CZechBoY
- Člen | 3608
Budeš si muset předat druhou instanci
Nette\Database\Context
– přes konstruktor ideálně.
v konfiguráku třeba:
database:
mojeDb1:
dsn: ...
user: ...
password: ...
mojeDb2:
dsn: ...
user: ...
password: ...
services:
- App\MujSuperModel(@database.mojeDb1.context, @database.mojeDb2.context)
v php třídě potom:
namespace App;
use Nette\Database\Context;
class MujSuperModel
{
protected $db1;
protected $db2;
function __construct (Context $db1, Context $db2)
{
$this->db1 = $db1;
$this->db2 = $db2;
}
function getUsers ()
{
return $this->db1->table('user');
}
function getAdmins ()
{
return $this->db2->table('admin');
}
}
Editoval CZechBoY (24. 2. 2016 17:46)