如何在流明中使用多个数据库

Gov*_*row 3 laravel lumen lumen-5.2 lumen-5.3

我们使用Lumen构建API,现在我们需要访问多个数据库.

目前.env用于数据库配置,但无法找到多个数据库的方式.env

我们需要阅读第二个连接...

Hir*_*hel 11

首先,您需要配置连接.如果您还没有,则需要config在项目中创建目录并添加该文件config/database.php.它可能看起来像这样:

<?php

return [

   'default' => 'accounts',

   'connections' => [
        'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST'),
            'port'      => env('DB_PORT'),
            'database'  => env('DB_DATABASE'),
            'username'  => env('DB_USERNAME'),
            'password'  => env('DB_PASSWORD'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
         ],

        'mysql2' => [
            'driver'    => 'mysql',
            'host'      => env('DB2_HOST'),
            'port'      => env('DB_PORT'),
            'database'  => env('DB2_DATABASE'),
            'username'  => env('DB2_USERNAME'),
            'password'  => env('DB2_PASSWORD'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
    ],
];
Run Code Online (Sandbox Code Playgroud)

添加connection配置后,可以通过从容器中取出数据库管理器对象并进行调用来访问它们->connection('connection_name').

// Use default connection
app('db')->connection()->select('xx');
DB::connection()->select('yy');

// Use mysql2 connection
app('db')->connection('mysql2')->select('xx');
DB::connection('mysql2')->select('yy');
Run Code Online (Sandbox Code Playgroud)

希望这对你有所帮助!!

  • 我发现如果在项目的根目录中创建目录`/ config`和文件`database.php`,流明将覆盖供应商的文件.谢谢! (2认同)

Pau*_*aul 5

这也奏效了。在当前版本的 Lumen 5.7 中

配置/数据库.php

<?php

return [

    'default' => env('DB_CONNECTION', 'sqlsrv'),
    'migrations' => 'migrations',
    'connections' => [
        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],

        'sqlsrv2' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE2', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
            'prefix_indexes' => true,
        ],
    ],
];
Run Code Online (Sandbox Code Playgroud)

.env

DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_PORT=1433
DB_DATABASE=database1
DB_USERNAME=username
DB_PASSWORD=password

DB_DATABASE2=database2
Run Code Online (Sandbox Code Playgroud)

用法:

型号:protected $connection = 'sqlsrv2'; 其他:->connection('sqlsrv2')

我希望我能帮助你!

参考: https: //fideloper.com/laravel-multiple-database-connections