Nel mio database.php
, ho due database configurati.laravel - modificare la connessione al database di default a livello globale
'db1' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'db1',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
'db2' => array(
'driver' => 'pgsql',
'host' => 'localhost',
'database' => 'db2',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
),
Quindi per default db1
è impostato come predefinito DB inizialmente. Ora voglio cambiare il database di default a 'db2' selezionando un'opzione dal 'selezionare' discesa. Questo farà una richiesta POST AJAX per il metodo di controllo in cui faccio
public function postChangeDb() {
$db = Input::get('db');
Config::set('database.default', $db);
}
Una volta fatto questo, ho 'Aggiorna' nella pagina, ma la connessione è ancora a 'db1'.
Ho anche provato il seguente
public function getTest() {
Config::set('database.default', 'db1');
$users = User::all();
echo sizeof($users); // returns 20
Config::set(database.default', 'db2');
$users = User::all();
echo sizeof($users); // returns 50 - which is correct!
}
E quanto sopra funziona bene e passa correttamente il database. Il commutatore è "per richiesta"?
sì . provato. ha modificato anche la mia domanda. – ericbae
@ericbae Ho aggiornato la mia risposta –