如何在Lumen中使用多个数据库

7
我们正在使用Lumen来构建API,现在我们需要访问多个数据库。目前使用.env文件进行数据库配置,但无法找到在.env中配置多个数据库的方法。我们需要读取第二个连接……

我们需要两个数据库。 - Govind Samrow
可能是如何在Laravel中使用多个数据库的重复问题。 - Abdulla Nilam
2个回答

22

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

首先,您需要配置连接。如果没有,请在项目中创建一个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,
        ],
    ],
];

在添加了连接配置之后,您可以通过从容器中获取数据库管理器对象并调用->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');

希望这能对你有所帮助!


这个文件位于/vendor/laravel/luman-framework/目录下。修改这样的文件是否可以?似乎应该有一种方法将其放置在一个位置,以便存储库可以通知其他开发人员组定义新的环境变量。有什么想法吗? - Gabo
@GaboLato:你好,感谢提问!在vendor文件夹中进行更改是不好的。请找到该文件,如果您想查看更多信息,请访问此链接:https://dev59.com/-FoU5IYBdhLWcg3wsYTM - Hiren Gohel
因为如果您在vendor文件夹中进行更改,它只会在本地服务器上更改,而不会在生产服务器上更改,您还需要在生产服务器的vendor文件夹中进行更改,这不是一个好的做法! - Hiren Gohel
3
我发现,如果你在项目的根目录下创建一个名为 /config 的文件夹和一个名为 database.php 的文件,Lumen将会覆盖厂商的文件。谢谢! - Gabo
1
需要在 bootstrap/app.php 中添加的另一件事是 $app->configure('database');。 - Phani Shashank

5
这个也可以工作。在当前版本的Lumen 5.7中。
配置文件位于config/database.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,
        ],
    ],
];

.env

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

DB_DATABASE2=database2

用法:

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

希望我能帮到你!

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


谢谢,我得到了我想要的东西。使用Eloquent进行多个数据库连接。 - sayyed tabrez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接