Heim > Backend-Entwicklung > PHP-Tutorial > Wie verwaltet man mehrere Datenbankverbindungen in Laravel?

Wie verwaltet man mehrere Datenbankverbindungen in Laravel?

DDD
Freigeben: 2025-01-04 11:11:35
Original
456 Leute haben es durchsucht

How to Manage Multiple Database Connections in Laravel?

Verwaltung mehrerer Datenbanken in Laravel

Bei der Arbeit mit Laravel-Anwendungen kommt es häufig zu Situationen, in denen mehrere Datenbanken erforderlich sind. In solchen Fällen ist es wichtig zu verstehen, wie Sie diese Datenbanken innerhalb Ihrer Laravel-Anwendung effektiv verwalten und mit ihnen interagieren können.

Laravels Datenbankfassade

Laravel stellt die DB-Fassade bereit, die als zentraler Punkt für dient Zugriff auf verschiedene Datenbankverbindungen. Mithilfe der von der DB-Fassade bereitgestellten Verbindungsmethode können Entwickler Verbindungen zu mehreren Datenbanken herstellen und abrufen. Die Verbindungsmethode erwartet einen Parameter, der dem in der Konfigurationsdatei config/database.php definierten Verbindungsnamen entspricht.

$users = DB::connection('foo')->select(...);
Nach dem Login kopieren

Datenbankverbindungen konfigurieren

Verwendung von .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
Nach dem Login kopieren

Verwenden 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'),
],
Nach dem Login kopieren

Ohne .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>Abfragen und Modell Manipulation</h3>
<p><strong>Schema</strong>:</p>
<p>Die Verbindungsmethode kann angewendet werden, um die Datenbank für Schemaoperationen anzugeben:</p>
<pre class="brush:php;toolbar:false">Schema::connection('pgsql')->create('some_table', function($table){ ... });
Nach dem Login kopieren

Abfrage Builder:

$users = DB::connection('pgsql')->select(...);
Nach dem Login kopieren

Modelle:

Die Verbindung kann explizit im Modell definiert werden Klasse:

class ModelName extends Model {
    protected $connection = 'pgsql';
}
Nach dem Login kopieren

Eloquent:

class SomeModel extends Eloquent {
    protected $connection = 'pgsql';
}
Nach dem Login kopieren

Transaktionen

Transaktionen können auch über mehrere Datenbanken hinweg verwaltet werden:

DB::transaction(function () {
    DB::connection('mysql')->table('users')->update(...);
    DB::connection('pgsql')->table('orders')->update(...);
});
Nach dem Login kopieren

Laufzeitverbindungsverwaltung

Verbindungen können eingestellt werden dynamisch:

$someModel = new SomeModel;
$someModel->setConnection('pgsql'); // non-static
$something = $someModel->find(1);
$something = SomeModel::on('pgsql')->find(1); // static
Nach dem Login kopieren

Beziehungen und Vorbehalte

Beim Umgang mit Beziehungen zwischen verschiedenen Datenbanken ist Vorsicht geboten. Dies ist möglich, erfordert jedoch möglicherweise eine sorgfältige Prüfung der Datenbankeinrichtung und -einstellungen.

Das obige ist der detaillierte Inhalt vonWie verwaltet man mehrere Datenbankverbindungen in Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage