Heim > PHP-Framework > Laravel > Hauptteil

Detaillierte Erklärung, wie Laravel mehrere Datenbanken nutzt (mit Codebeispielen)

藏色散人
Freigeben: 2021-10-29 15:04:42
nach vorne
2556 Leute haben es durchsucht

Die folgende Tutorial-Kolumne von Laravel wird Ihnen die Verwendung mehrerer Datenbanken in Laravel vorstellen. Ich hoffe, sie wird Ihnen hilfreich sein!

Verwenden Sie .env >= 5.0.env >= 5.0 (测试基于 5.5 Laravel 8 也可用)

.env 文件

DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=database1DB_USERNAME=rootDB_PASSWORD=secretDB_CONNECTION_SECOND=mysqlDB_HOST_SECOND=127.0.0.1DB_PORT_SECOND=3306DB_DATABASE_SECOND=database2DB_USERNAME_SECOND=rootDB_PASSWORD_SECOND=secret
Nach dem Login kopieren

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'),],'mysql2' => [
    'driver'    => env('DB_CONNECTION_SECOND'),
    'host'      => env('DB_HOST_SECOND'),
    'port'      => env('DB_PORT_SECOND'),
    'database'  => env('DB_DATABASE_SECOND'),
    'username'  => env('DB_USERNAME_SECOND'),
    'password'  => env('DB_PASSWORD_SECOND'),],
Nach dem Login kopieren

注意:mysql2 中,如果 db_usernamedb_password 相同, 那么你可以使用  env('DB_USERNAME')


模式

要指定使用哪个连接,只需使用 connection() 方法

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

查询生产器

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

模型

在模型中设置 $connection变量。

class SomeModel extends Eloquent {

    protected $connection = 'mysql2';}
Nach dem Login kopieren

你也可以在运行时通过 setConnection 方法或 on 静态方法定义连接:

class SomeController extends BaseController {

    public function someMethod()
    {
        $someModel = new SomeModel;

        $someModel->setConnection('mysql2'); // non-static method

        $something = $someModel->find(1);

        $something = SomeModel::on('mysql2')->find(1); // static method

        return $something;
    }}
Nach dem Login kopieren

注意 在尝试与跨数据库的表建立关系时要小心! 可以这样使用,但是它可能带有一些注意事项,并且取决于您拥有的数据库与数据库设置。


来自 Laravel Docs

使用多个数据库连接

当使用多个连接时,您可以通过 DB门面类上的连接方法访问每个连接。传递给 connection 方法的名称应该对应于 config/database.php 配置文件中列出的一个连接:

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

您还可以使用连接实例上的 getPdo (getestet basierend auf 5.5 Laravel 8 ist ebenfalls verfügbar)

in der .env-Datei

$pdo = DB::connection()->getPdo();
Nach dem Login kopieren
in config/database.php-Datei 🎜🎜rrreee
🎜🎜Hinweis:🎜 In mysql2, wenn db_username und db_password code> derselbe ist, können Sie <code>env('DB_USERNAME') verwenden. ?? Legen Sie im Modell die Variable $connection fest. 🎜rrreee🎜Sie können die Verbindung auch zur Laufzeit über die Methode setConnection oder die statische Methode on definieren: 🎜rrreee
🎜🎜Hinweis🎜 Beim Versuch, ein Kreuz herzustellen -Datenbanktabelle Seien Sie vorsichtig, wenn es um Beziehungen geht! Dies kann verwendet werden, kann jedoch mit einigen Einschränkungen verbunden sein und hängt von der Datenbank und dem Datenbank-Setup ab, über das Sie verfügen. 🎜🎜

🎜🎜Aus Laravel-Dokumenten

🎜🎜Verwendung mehrerer Datenbankverbindungen🎜🎜🎜Bei Verwendung mehrerer Verbindungen können Sie die 🎜DB🎜facade-Klasse Die Verbindung übergeben Auf jede Verbindung wird auf die Methode zugegriffen. Der an die Methode 🎜connection🎜 übergebene Name sollte einer Verbindung entsprechen, die in der Konfigurationsdatei 🎜config/database.php🎜 aufgeführt ist: 🎜rrreee🎜 Sie können auch eine Verbindung verwenden Instanz Die getPdo-Methode greift auf die ursprüngliche zugrunde liegende PDO-Instanz zu: 🎜rrreee🎜🎜Originaladresse: https://stackoverflow.com/questions/31847054/how-to-use-multiple-databases-in- laravel 🎜🎜Übersetzungsadresse: https://learnku.com/laravel/t/62110🎜🎜

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie Laravel mehrere Datenbanken nutzt (mit Codebeispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
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