Introduction
Les applications modernes nécessitent souvent l'accès à plusieurs bases de données pour gérer diverses sources de données . Laravel simplifie ce processus en fournissant une gamme de fonctionnalités pour intégrer de manière transparente plusieurs bases de données dans votre application.
Utilisation de la façade de base de données
Pour établir des connexions à différentes bases de données dans Laravel, exploiter la méthode de connexion de la façade DB. Chaque connexion que vous définissez correspond à une entrée de configuration dans votre fichier config/database.php.
Définition des connexions à la base de données
Configurez les connexions à la base de données à l'aide de .env ou de config/database Fichier .php. Voici un exemple utilisant .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
Dans config/database.php, vous pouvez définir les connexions comme suit :
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST'), 'database' => env('DB_DATABASE'), 'username' => env('DB_USERNAME'), 'password' => env('DB_PASSWORD') ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST_PGSQL'), 'database' => env('DB_DATABASE_PGSQL'), 'username' => env('DB_USERNAME_PGSQL'), 'password' => env('DB_PASSWORD_PGSQL') ]
Travailler avec plusieurs bases de données
Après avoir défini vos connexions, vous pouvez y accéder en utilisant la méthode de connexion, comme dans ce qui suit Exemples :
// Database operations on 'mysql' database $users = DB::connection('mysql')->select(...); // Database operations on 'pgsql' database $orders = DB::connection('pgsql')->select(...);
Générateur de schéma, de migration et de requête
Pour effectuer des opérations de création de schéma, de migration ou de requête sur une base de données spécifique, spécifiez la connexion à l'aide de l'option méthode de connexion :
// Schema operations on 'pgsql' database Schema::connection('pgsql')->create('some_table', function($table) {}); // Migrations on 'mysql' database Artisan::call('migrate', ['--connection' => 'mysql']); // Query builder operations on 'pgsql' database $results = DB::connection('pgsql')->select(...);
Modèle et Eloquent
Pour utiliser une base de données spécifique pour votre modèle ou vos opérations Eloquent, définissez la propriété $connection dans votre modèle :
// Model using 'pgsql' database class User extends Model { protected $connection = 'pgsql'; }
Gestion des transactions
Pour exécuter des transactions sur plusieurs bases de données, utilisez la transaction method :
DB::transaction(function () { DB::connection('mysql')->table('users')->update(['name' => 'John']); DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']); });
Sélection de la connexion d'exécution
Vous pouvez également modifier dynamiquement la connexion à la base de données à l'aide de la méthode setConnection ou de la méthode on static :
// Runtime connection change $someModel = new SomeModel; $someModel->setConnection('pgsql'); // Static connection change $something = SomeModel::on('pgsql')->find(1);
Remarque : Soyez prudent lorsque vous établissez des relations entre les tables des bases de données. C'est possible mais cela peut introduire des complexités.
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!