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
DDDoriginal
2025-01-04 11:11:35454parcourir

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(...);

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

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';
}

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(...);
});

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

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:
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