Maison >développement back-end >tutoriel php >Comment gérer plusieurs connexions à des bases de données dans Laravel ?
Lorsque vous travaillez avec des applications Laravel, il est courant de rencontrer des situations où plusieurs bases de données sont requises. Dans de tels cas, il est crucial de comprendre comment gérer et interagir efficacement avec ces bases de données au sein de votre application Laravel.
Laravel fournit la façade DB, qui sert de point central pour accéder à différentes connexions de base de données. En utilisant la méthode de connexion fournie par la façade DB, les développeurs peuvent établir et récupérer des connexions à plusieurs bases de données. La méthode de connexion attend un paramètre correspondant au nom de connexion défini dans le fichier de configuration config/database.php.
$users = DB::connection('foo')->select(...);
Utilisation de .env :
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=mysql_database DB_USERNAME=root DB_PASSWORD=secret DB_CONNECTION_PGSQL=pgsql DB_HOST_PGSQL=127.0.0.1 DB_PORT_PGSQL=5432 DB_DATABASE_PGSQL=pgsql_database DB_USERNAME_PGSQL=root DB_PASSWORD_PGSQL=secret
Utilisation config/database.php:
'mysql' => [ 'driver' => env('DB_CONNECTION'), 'host' => env('DB_HOST'), 'port' => env('DB_PORT'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD'), ], 'pgsql' => [ 'driver' => env('DB_CONNECTION_PGSQL'), 'host' => env('DB_HOST_PGSQL'), 'port' => env('DB_PORT_PGSQL'), 'database' => env('DB_DATABASE_PGSQL'), 'username' => env('DB_USERNAME_PGSQL'), 'password' => env('DB_PASSWORD_PGSQL'), ],
Sans .env (Laravel <= 4.0):
return array( 'default' => 'mysql', 'connections' => array( 'mysql' => array( 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'mysql_database', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), 'pgsql' => [ 'driver' => 'pgsql', 'host' => 'localhost', 'port' => '5432', 'database' => 'pgsql_database', 'username' => 'root', 'password' => 'secret', 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', ] ), );<h3>Requêtes et modèle Manipulation</h3> <p><strong>Schéma</strong> :</p> <p>La méthode de connexion peut être appliquée pour spécifier la base de données pour les opérations de schéma :</p> <pre class="brush:php;toolbar:false">Schema::connection('pgsql')->create('some_table', function($table){ ... });
Requête Constructeur:
$users = DB::connection('pgsql')->select(...);
Modèles:
La connexion peut être explicitement définie dans le modèle class:
class ModelName extends Model { protected $connection = 'pgsql'; }
Éloquent:
class SomeModel extends Eloquent { protected $connection = 'pgsql'; }
Les transactions peuvent également être gérées sur plusieurs bases de données :
DB::transaction(function () { DB::connection('mysql')->table('users')->update(...); DB::connection('pgsql')->table('orders')->update(...); });
Les connexions peuvent être définies dynamiquement :
$someModel = new SomeModel; $someModel->setConnection('pgsql'); // non-static $something = $someModel->find(1); $something = SomeModel::on('pgsql')->find(1); // static
Lorsque vous traitez des relations entre différentes bases de données, faites preuve de prudence. C'est possible mais peut nécessiter un examen attentif de la configuration et des paramètres de la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!