Maison > développement back-end > tutoriel php > Comment gérer plusieurs connexions à des bases de données dans Laravel ?

Comment gérer plusieurs connexions à des bases de données dans Laravel ?

DDD
Libérer: 2025-01-04 11:11:35
original
501 Les gens l'ont consulté

How to Manage Multiple Database Connections in Laravel?

Gérer plusieurs 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.

Façade de base de données de 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(...);
Copier après la connexion

Configuration des connexions à la base de données

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
Copier après la connexion

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'),
],
Copier après la connexion

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){ ... });
Copier après la connexion

Requête Constructeur:

$users = DB::connection('pgsql')->select(...);
Copier après la connexion

Modèles:

La connexion peut être explicitement définie dans le modèle class:

class ModelName extends Model {
    protected $connection = 'pgsql';
}
Copier après la connexion

Éloquent:

class SomeModel extends Eloquent {
    protected $connection = 'pgsql';
}
Copier après la connexion

Transactions

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(...);
});
Copier après la connexion

Gestion des connexions d'exécution

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
Copier après la connexion

Relations et mises en garde

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal