2013-07-22 18 views
7

Pracuję nad witryną opartą na Laravel 4, która działa w wielu bazach danych. Jest jedno zapytanie, które muszę uruchomić na każdym żądaniu, które ściąga rekord z innej bazy danych.Ustaw bazę danych dla modelu?

Czy jest jakiś sposób, w jaki sposób mogę powiązać ten konkretny model z inną bazą danych, aby móc go odzyskać jak zwykle?

$client = Client::find(Session::get('client_id')); 

Każda rada doceniana.

Dzięki

Odpowiedz

23
// Model 
class Client extends Eloquent 
{ 
    protected $connection = 'masterDb'; 
} 


// config/database.php 
'masterDb' => array(
    'driver' => 'mysql', 
    'host'  => 'localhost', 
    'database' => 'name', 
    'username' => 'user', 
    'password' => 'pass', 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
), 

Można utworzyć wiele połączeń nazwanych jak chcesz. Ustaw jeden z nich jako domyślny, każdy model może później użyć dowolnego z tych połączeń.

+1

Należy pamiętać, że: tworzenie zapytania przez wywołanie DB :: table ("client") (zamiast Client :: query()) nadal zwraca zapytanie przy użyciu domyślnego połączenia – ThoQ

+1

Podczas korzystania ze składni DB :: table, musisz wykonać : 'DB :: connection ('masterDb') -> table (" client ")' –

Powiązane problemy