Utiliser plusieurs bases de données dans Laravel
La gestion de plusieurs bases de données au sein d'un système est une exigence courante dans de nombreuses applications. Laravel gère ce scénario efficacement grâce à sa façade de base de données.
Utilisation de la façade de base de données
La façade de base de données fournit une méthode de connexion qui vous permet d'accéder à diverses connexions définies dans la configuration Fichier de configuration /database.php. Pour accéder à une connexion spécifique, utilisez la syntaxe suivante :
$users = DB::connection('foo')->select(...);
Définition des connexions
Dans les versions 5.0 et ultérieures de Laravel, les connexions sont définies dans le fichier .env ou config/database.php.
.env (Laravel 5.0 et plus tard)
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
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'), ],
Schéma et migration
Appel la méthode connection() pour spécifier la connexion pour le schéma ou la migration opérations :
Schema::connection('pgsql')->create('some_table', function($table) { $table->increments('id'); });
Query Builder
Semblable aux opérations de schéma, utilisez la méthode connection() pour les requêtes :
$users = DB::connection('pgsql')->select(...);
Modèles
Définir la connexion pour un modèle dans son classe :
Laravel 5.0 et versions ultérieures :
class ModelName extends Model { protected $connection = 'pgsql'; }
Laravel 4.0 et versions antérieures :
class SomeModel extends Eloquent { protected $connection = 'pgsql'; }
Transactions
Les transactions peuvent être effectuées sur plusieurs connexions à l'aide du syntaxe suivante :
DB::transaction(function () { DB::connection('mysql')->table('users')->update(['name' => 'John']); DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']); });
Conclusion
Laravel fournit une prise en charge robuste pour travailler avec plusieurs bases de données via la façade DB et d'autres méthodes. Cela permet aux développeurs de répondre aux applications qui nécessitent une gestion transparente des données sur des systèmes de bases de données hétérogènes.
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!