Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich mehrere Datenbankverbindungen in Laravel verwalten?

Wie kann ich mehrere Datenbankverbindungen in Laravel verwalten?

Patricia Arquette
Freigeben: 2024-12-23 02:45:30
Original
177 Leute haben es durchsucht

How Can I Manage Multiple Database Connections in Laravel?

Verbinden mehrerer Datenbanken mit Laravel

Um mehrere Datenbanken innerhalb eines Laravel-Systems zu verwalten, bietet Laravel durch seine Datenbankfassade eine vielseitige Lösung.

Verwenden von Datenbankverbindungen

Bei Verwendung mehrerer Datenbanken Verbindungen können Sie über die Verbindungsmethode auf der DB-Fassade auf jede Verbindung zugreifen. Der für die Verbindungsmethode bereitgestellte Name stimmt mit den in der Konfigurationsdatei config/database.php definierten Namen überein:

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

Definition von Verbindungen

Datenbankverbindungen können sein konfiguriert mit der .env-Datei oder der config/database.php-Datei:

Verwenden der .env Datei:

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 der Datei 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

Schema und Migrationen

Um die Verbindung anzugeben, die für Schema und Migrationen verwendet werden soll, verwenden Sie die Funktion „connection()“ Methode:

Schema::connection('pgsql')->create('some_table', function ($table) {
    $table->increments('id');
});
Nach dem Login kopieren

Alternativ können Sie eine Verbindung an der Spitze der Klasse definieren:

protected $connection = 'pgsql';
Nach dem Login kopieren

Query Builder

Zu verwenden den Query Builder für eine bestimmte Verbindung:

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

Modell

In Laravel 5.0 und höher können Sie die Variable $connection in Ihrem Modell festlegen:

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

Eloquent

In Laravel 4.0 und niedriger können Sie das definieren $Verbindungsvariable in Ihrem Modell:

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

Transaktionsmodus

Um Transaktionen über mehrere Datenbanken hinweg zu verwalten:

DB::transaction(function () {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
});
Nach dem Login kopieren

oder

DB::connection('mysql')->beginTransaction();

try {
    DB::connection('mysql')->table('users')->update(['name' => 'John']);
    DB::connection('pgsql')->beginTransaction();
    DB::connection('pgsql')->table('orders')->update(['status' => 'shipped']);
    DB::connection('pgsql')->commit();
    DB::connection('mysql')->commit();
} catch (\Exception $e) {
    DB::connection('mysql')->rollBack();
    DB::connection('pgsql')->rollBack();
    throw $e;
}
Nach dem Login kopieren

Laufzeitverbindungsverwaltung

Sie können auch Stellen Sie zur Laufzeit Verbindungen mit der setConnection-Methode oder der on static-Methode her:

class SomeController extends BaseController {
    public function someMethod()
    {
        $someModel = new SomeModel;
        $someModel->setConnection('pgsql'); // non-static method
        $something = $someModel->find(1);
        $something = SomeModel::on('pgsql')->find(1); // static method
        return $something;
    }
}
Nach dem Login kopieren

Vorsicht

Beim Herstellen von Beziehungen mit Tabellen über verschiedene Datenbanken hinweg ist Vorsicht geboten aufgrund möglicher Einschränkungen aufgrund der von Ihnen verwendeten Datenbank und Einstellungen.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Datenbankverbindungen in Laravel verwalten?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage