2016-05-14 3 views
0

Ich benutze Laravel und ich erstellt eine Multi-Tenant-App mit den Datenbankverbindungen, jetzt muss ich in der Lage sein, den Inhalt der Datenbank.php automatisch mit meinem erstellen gewählte Eingabe.Wie erstelle ich eine PHP-Datei auf dem Server mit dynamischer Eingabe

Probe von database.php:

'connections' => [ 

    'db1' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => 'db1', 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ], 

    'db2' => [ 
     'driver' => 'mysql', 
     'host'  => env('DB_HOST', 'localhost'), 
     'database' => 'db2', 
     'username' => env('DB_USERNAME', 'forge'), 
     'password' => env('DB_PASSWORD', ''), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ] 
] 

Also im Grunde werde ich eine Form haben, die diese erforderlichen Felder wie db Namen fragen, Verbindungsname, Passwort usw. Mein Problem ist, dass ich nicht eine feste Anzahl der Verbindungen, kann eins, zwei, vier, w/e und file_put_contents() erfordert eine Zeichenfolge, nicht ein Array von Daten. Also meine Frage ist, wie diese Datenbank.php Datei mit der Eingabe von meinem Formular erstellen, erstellen Sie die öffnende und schließende Klammer und alles, was benötigt wird? Gibt es eine Funktion, die ein Array in einen String konvertiert, wobei die Klammern und Operatoren beibehalten werden?

Wie kann ich das erreichen?

+0

Tun Sie dies nicht. Bitte. Ja, es ist eine effiziente Lösung im Vergleich zum Lesen der Struktur von Daten, aber selbst modifizierender Code ist inhärent ** SEHR ** gefährlich. – symcbean

+0

Hallo, es ist möglich, es sicher zu machen, dies wird eine private Admin-App sein, die Instanzen einer anderen nicht verwandten App erstellen und überwachen wird. –

Antwort

0

Wenn Sie auf diesem Weg gehen wollen, stellen Sie sicher, dass Sie eine Vorlagendatei haben, und Sie können Platzhalter einrichten, die Sie einfach ersetzen.

Ihre Beispielvorlagendatei enthält alle Anforderungen + Platzhalter für jede benötigte Information.

'db{index}' => [ 
      ...other key+values and it's placeholders... 
     ], 

Und einfach können Sie Schleife und concat so oft dieser Block in Ihrem letzten database.php Datei.


auf der anderen Seite könnten Sie dies im laufenden Betrieb tun, einige Schnipsel, um Sie zu führen.

$nameKey = 'NameOfConnection'; 

$dataSync = AtlasBases::find($id_client); 

Config::set('database.connections.' . $nameKey, array(
     'driver' => 'mysql', 
     'host'  => $dataSync->site_db_server, 
     'database' => $dataSync->site_db_base, 
     'username' => $dataSync->site_db_user, 
     'password' => $dataSync->site_db_password, 
      'charset' => 'utf8', 
     'collation' => 'utf8_general_ci', 
     'prefix' => '', 
)); 
# And set the new connection to my models 

$imobModel = new ImobImoveis; 
$imobModel->setConnection($nameKey); 
+0

Sorry, im laufenden Betrieb funktioniert nicht für meine App aufgrund der Art, wie ich den Code implementiert, ist die einfachste Möglichkeit, die Datei zu erstellen, die gut funktioniert, aber ich möchte nicht manuell erstellen, können Sie ein erweitertes Beispiel bereitstellen der Vorlage Weg und die Schleife, vielleicht eine Verbindung zur Verfügung stellen? –

Verwandte Themen