Lumen是否可以使用.env中的DB_连接连接到多个数据库?

3

我可以看到如何使用app/config/database.php中的配置文件来建立多个连接,这方面已经有了很好的文档记录。

除此之外,你也可以在.env文件中定义多个连接吗?


1
感谢您提供如此详细和清晰的回复。根据文档,我已经编写了多个数据库问题的代码。关键缺失的部分仍然是“您是否也可以使用.env文件定义多个连接?” - HamptonNorth
1个回答

3

首先,您需要配置连接。您需要在项目中创建一个config目录,并添加文件config/database.php。像这样:

<?php
return [

    'default' => 'mysql',
    'connections' => [
        'mysql' => [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'homestead',
            'username'  => 'root',
            'password'  => 'secret',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
        'mysql2' => [
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'homestead2',
            'username'  => 'root',
            'password'  => 'secret',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,
        ],
    ],

一旦您添加了连接配置,您可以通过从容器中获取数据库管理对象并调用 ->connection ('connection_name') 来访问它们。请参阅下面的完整示例。

<?php
namespace App\Http\Controllers;
use Illuminate\Database\DatabaseManager;
class StatsController extends Controller
{
    /**
     * @return array
     */
    public function getLatest()
    {
        // Resolve dependencies out of container
        /** @var DatabaseManager $db */

        $db = app('db');
        $database1 = $db->connection('mysql');
        $database2 = $db->connection('mysql2');

        // Look up 3 newest users and 3 newest blog posts
        $threeNewestUsers = $database1->select("SELECT * FROM users ORDER BY created_at DESC LIMIT 3");

        $threeLatestPosts = $database2->select("SELECT * FROM blog_posts ORDER BY created_at DESC LIMIT 3");
        return [
            "new_users" => $threeNewestUsers,
            "new_posts" => $threeLatestPosts,
        ];
    }
}

http://andyfleming.com/configuring-multiple-database-connections-in-lumen-without-facades/


问题是如何通过 .env 文件实现这个目标。有任何解决方案吗..?@plcosta - Ritesh
1
请参考 https://dev59.com/7KTja4cB1Zd3GeqPBGd4 了解如何在 Lumen 中使用多个数据库。 - mike

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