2016-11-03 3 views
0

Ich habe 3 Datenbanken in meiner App definiert (Legacy nicht mein Design!) Und ich möchte mit DB Select eine Raw-SQL, aber nicht von der primären DB ausführen.Laravel 5.3 DB Wählen Sie mit anderer Datenbank

Was ist die Syntax für das Erklären

DB::select('SELECT.... 

eine bestimmte vordefinierte Verbindung zu benutzen?

+0

Sie können mehrere Datenbank in der Konfigurationsdatei und verwenden diese 'DB :: Verbindung ('foo') einrichten -> (auszuwählen. ..); ' –

+0

Ich habe das gemacht und eine der Verbindungen" common "genannt und hinzugefügt" protected $ connection = 'common'; " an der Spitze des Modells, aber es scheint immer aus der Standard-DB auswählen zu wollen. – Jim

Antwort

1

Der Grund, warum die $ Connection-Deklaration scheinbar ignoriert wird, ist einfach: Mit dem Query Builder (DB-Klasse) verwenden Sie das Eloquente ORM nicht. Wenn Sie den Query Builder verwenden möchten, müssen Sie die Verbindung manuell falls abweichend von Standard erklären, wie dieser ...

DB::connection('connection-name') 

Denken Sie daran, dass die Eloquent Modelle Erweiterungen des Query Builder sind. Vorfeld des Eloquent-Modells (und im Fall des $ Verbindung geschützten Eigentums) importieren Sie das Eloquent Modell mit einer Aussage Gebrauch

use App\YourModel; 

und baut die Abfrage mit den gleichen Methoden für die Aufnahme, die Sie mit der Abfrage verwenden würden, Erbauer.

Nützliche Links zu Laravel docs:

Eloquent (check the "Database connection" section) /Database - Multiple database connections