2016-11-27 2 views
-1


comment puis-je changer la base de données dans Laravel dynamique? Disons que nous avons les variables suivantes:
laravel 5 base de données mysql dynamique

  • $ host (nom d'hôte MySQL/IP)
  • utilisateur $ (nom d'utilisateur MySQL)
  • $ name (nom de base de données MySQL)
  • pass $ (MySQL mot de passe utilisateur)

Comment puis-je me connecter à ce serveur mysql dans Laravel 5 sans le paramétrer à chaque fois dans la configuration?

Salutations

+0

dans le fichier '.env'? – jycr753

+0

@ jycr753 ah non, je reçois ces variables de ma base de données interne, qui est définie dans le **. ** env **. Mais je dois me connecter aux bases de données externes avec les variables et je ne peux pas configurer chaque serveur dans la config (+200), car les utilisateurs suppriment leurs serveurs ou ajoutent de nouveaux ... –

Répondre

1

Essayez cette hypothèse d'un modèle Book

use Book; 
 
use Illuminate\Support\Facades\DB; 
 
use Illuminate\Support\Facades\Config; 
 

 
public function configureDatabase($database){ 
 
     Config::set("database.connections.$database", array(
 
      'driver' => 'mysql', 
 
      'host'  => 'localhost', 
 
      'database' => "$database", 
 
      'username' => 'root',//User name here 
 
      'password' => '***', //Password here 
 
      'charset' => 'utf8', 
 
      'collation' => 'utf8_unicode_ci', 
 
      'prefix' => '', 
 
     )); 
 
    } 
 

 
public function getBooks($database){ 
 
    $this->configureDatabase($database) 
 
    return Book::on($database)->all(); 
 
}

+0

Puis-je utiliser l'utilisation de configuration presque illimitée? Config :: set est-il limité? –

+0

Bien sûr, vous pouvez. Le docs ne dit pas que l'appel à Config :: set() est limité. Gardez à l'esprit que cela crée une nouvelle connexion à une base de données différente, ce qui est un calcul coûteux. –

+0

Merci. Pouvez-vous répondre à la question de savoir pourquoi ma question a été rejetée? Ce qui était faux? Pas de code? Pour cette question je pense qu'il n'y a pas de code nécessaire. –