Heim > PHP-Framework > Laravel > Hauptteil

So verbinden Sie zwei Datenbanken, um Daten in Laravel abzufragen

PHPz
Freigeben: 2023-04-12 09:54:02
Original
1286 Leute haben es durchsucht

Mit der kontinuierlichen Weiterentwicklung der Netzwerktechnologie sind moderne Webanwendungen heute nicht mehr wegzudenken. Bei Webanwendungen ist aber natürlich auch die Datenverwaltung ein entscheidendes Bindeglied. Darüber hinaus gibt es bei großen Webanwendungen in der Regel mehrere Datenbanken. Beispielsweise verfügt eine E-Commerce-Plattform neben der grundlegenden Produktinformationsdatenbank auch über verschiedene Datenbanken wie Benutzerinformationen, Bestellinformationen, Zahlungsinformationen usw. Wie kann man also mehrere Datenbanken verbinden und Daten unter dem Laravel-Framework abfragen? Dieser Artikel stellt eine Methode vor, die befolgt werden kann.

Zuerst müssen Sie mehrere Datenbanken in der Datenbankkonfigurationsdatei config/database.php von Laravel konfigurieren, wie unten gezeigt:

'connections' => [

    'mysql' => [
        //mysql主数据库
        'driver' => 'mysql',
        'host' => 'localhost',
        'database' => 'db1',
        'username' => 'root',
        'password' => '',
    ],

    'mysql2' => [
        //mysql2次数据库
        'driver' => 'mysql',
        'host' => 'localhost',
        'database' => 'db2',
        'username' => 'root',
        'password' => '',
    ],

],
Nach dem Login kopieren

Mysql und mysql2 sind in der obigen Konfigurationsdatei definiert Zwei Datenbankverbindungen. Die spezifische Konfiguration kann an Ihre eigenen Bedürfnisse angepasst werden.

Als nächstes müssen Sie zwei Datenbankverbindungen definieren. Sie können im Verzeichnis /model eine neue Basisklasse ModelBase erstellen und darin mehrere Verbindungen definieren.

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class ModelBase extends Model
{
    // mysql
    protected $connection = &#39;mysql&#39;;

    // mysql2
    protected $connection2 = &#39;mysql2&#39;;

    protected function getConnectionName()
    {
        if ($this->getConnection() === $this->connection2) {
            return $this->connection2;
        }
        return $this->connection;
    }

    public function getTable()
    {
        $table = parent::getTable();

        if ($this->getConnection() === $this->connection2) {
            $table = 'db2.' . $table;
        }
        return $table;
    }

}
Nach dem Login kopieren

Der obige Code definiert zwei Verbindungen: MySQL und MySQL2. Definieren Sie außerdem die beiden Funktionen getConnectionName und getTable. Die Funktion getConnectionName gibt den aktuellen Datenbankverbindungsnamen zurück und die Funktion getTable wird verwendet, um die aktuelle Datenbanktabelle abzurufen.

Verwenden Sie es schließlich im tatsächlichen Modell:

namespace App\Models;
class UserModel extends ModelBase
{
    protected $table = 'user';
}
Nach dem Login kopieren

Im Modell erben Sie von ModelBase, und wenn Sie $table definieren, müssen Sie nur den Tabellennamen schreiben.

Das Obige ist eine Methode zum Verbinden zweier Datenbanken, um Daten in Laravel abzufragen. Auf diese Weise können Abfragevorgänge mehrerer Datenbanken realisiert werden. Bei umfangreichen Anwendungen kann diese Methode Abfrageprobleme zwischen mehreren Datenbanken effektiv lösen, wodurch das Programm effizienter und stabiler ausgeführt wird.

Das obige ist der detaillierte Inhalt vonSo verbinden Sie zwei Datenbanken, um Daten in Laravel abzufragen. 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