简体   繁体   English

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

[英]How to use multiple database in Lumen

We've using Lumen for building API's , Now we need to access multiple databases. 我们使用Lumen构建API,现在我们需要访问多个数据库。

Currently using .env for database config but unable to found the way to multiple databases in .env 目前使用.env进行数据库配置但无法找到.env多个数据库的.env

where we need to read 2nd connection ... 我们需要阅读第二个连接...

First, you'll need to configure your connections. 首先,您需要配置连接。 If you don't already have one you'll need to create a config directory in your project and add the file config/database.php . 如果您还没有,则需要在项目中创建config目录并添加文件config/database.php It might look like this: 它可能看起来像这样:

<?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,
        ],
    ],
];

Once you've added your connection configurations, you can access them by getting the database manager object out of the container and calling ->connection('connection_name') . 添加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');

Hope this helps you!! 希望这对你有所帮助!!

This also worked. 这也有效。 In the current version of Lumen 5.7 在当前版本的Lumen 5.7中

config/database.php 配置/ 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 .ENV

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

DB_DATABASE2=database2

Usage: 用法:

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

I hope i help you! 我希望我帮助你!

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM