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.
Diese Antwort wird für Sie nützlich sein, https://stackoverflow.com/questions/20392180/creating-the-database-on-fly –