2017-06-16 3 views
2

Ich brauche Multi-Datenbank-Konzept für mein Projekt. Ich erstelle Benutzer in Echtzeit automatisch erstellen neue Datenbank für diesen neuen Benutzer. Diese neue Benutzeranmeldung wechselte zu master-Datenbank zu Benutzer-Datenbank .. wie dies zu tun .. Ich versuche Larval 5.4 Version.Laravel Wie man Datenbank in Echtzeit erstellt und wie die alte Datenbank und wie man auf diese Datenbank zugreift

1. Wie erstellt man Datenbank in Echtzeit für neue Benutzer?

2. Wie Benutzer Login Master-Datenbank Benutzerdatenbank wechseln?

+0

Diese Antwort wird für Sie nützlich sein, https://stackoverflow.com/questions/20392180/creating-the-database-on-fly –

Antwort

1

Sie können Schemas erstellen und sie in Echtzeit migrieren, ich habe genau dies zuvor in einem Projekt getan. Verwenden Sie die folgenden

DB::connection('mydb')->statement(DB::raw('CREATE DATABASE....BLAH BLAH BLAH'))

für die Erstellung neuer Datenbanken rohe Abfragen auszuführen. Sie benötigen Ihre Master-Verbindung, um diese Abfragen auszuführen.

Dann können Sie Artisan::call('migrate', ['--database' => 'newdb']) zu migrieren und optional säen.

Schließlich müssen Sie entweder einen Kundeneintrag in Ihrer Datenbankkonfigurationsdatei haben, der bestimmt, mit welchem ​​Schema der Benutzer eine Verbindung herstellt, oder Sie können diese Echtzeit mit Config::set(['my.user.db.config') festlegen.

Meine Strategie zum Erstellen eindeutiger Datenbanken für den Kunden bestand darin, eine GUID als Datenbanknamen zu verwenden und ein Hauptprotokoll in meiner Hauptdatenbank zu führen. Wenn sich ein Benutzer anmeldet, wird sein Datenbankname vom Master gelesen, und dann wechselt die Anwendung seine Verbindung im laufenden Betrieb. Meine Firma hat Hunderte von kleinen Kundendatenbanken mit Namen wie 123151-2135151-5132123-545-231231, die sie einzigartig halten.

Es ist ziemlich kompliziert und es gibt eine Menge beweglicher Teile, aber das wird dir helfen.

Verwandte Themen