2016-08-29 2 views
3

Ich entwickle eine Multi-Tenant-Anwendung mit Laravel-5.2 Jeder Mieter wird eine separate Datenbank haben. Jeder Mieter hat seine eigene Subdomain. Ich erkenne Mieter mit ihren Subdomains.Laravel basteln in Multi-Tenant-Umgebung

Ich habe Modelle Tenant und DatabaseConnection wo Tenant hasOne DatabaseConnection und DatabaseConnection belongsTo Tenant eingerichtet. Die DB-Verbindungen für Mandanten werden dynamisch von BeforeMiddleware festgelegt. Diese funktionieren perfekt.

Jetzt möchte ich artisan tinker für die Mieter verwenden. Aber wenn ich rufe php artisan tinker es verbindet sich mit der Tenant, deren DB-Credentials in der Datei .env vorhanden sind.

Also ich versuche, einen Konsolenbefehl für die gleiche zu machen. Das habe ich bisher erreicht.

Also wie lege ich die DB-Verbindungen für bestimmte Mieter und wie tunke ich laufen?

+0

http://stackoverflow.com/questions/31281669/how-do-i-connect-to-different-databases-at-run-time –

+0

Sie versuchen, einen Konsolenbefehl zu machen, um in einen bestimmten zu "basteln" Mieter? – linuxartisan

+0

Ja. Damit ich die DB-Zugangsdaten in '.env' Datei nicht ändern muss, bevor ich' tinker' starte. –

Antwort

2

Nachdem Sie die $connection Variable in fire() bekommen, dies tun

DB::purge('mysql'); 

Config::set('database.connections.mysql.host', $connection->server); 
Config::set('database.connections.mysql.database', $connection->database); 
Config::set('database.connections.mysql.username', $connection->username); 
Config::set('database.connections.mysql.password', $connection->password); 
// I am assuming the variable names in $connection object here, as you have not specified them in your question. 

Artisan::call('tinker'); 

sehen, ob dies für Sie arbeitet.

+0

Es hat funktioniert. Danke –

Verwandte Themen