在laravel中进行多个数据库连接

11 浏览
0 Comments

在laravel中进行多个数据库连接

我想在我的系统中合并多个数据库。大部分时间数据库是MySQL,但未来可能会有所不同,即管理员可以生成来自异构数据库系统的报告。所以我的问题是,Laravel是否提供任何Facade来处理这种情况?或者其他框架是否具有更适合解决这个问题的能力?

0
0 Comments

Laravel支持多个数据库系统,您需要在config/database.php文件中提供连接详细信息。

return [
    'default' => env('DB_CONNECTION', 'mysql'),
    'connections' => [
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
'mysqlOne' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST_ONE', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE_ONE', 'forge'),
            'username' => env('DB_USERNAME_ONE', 'forge'),
            'password' => env('DB_PASSWORD_ONE', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
    ],
];

有了这些,您可以为每个连接创建两个基本模型类,并在这些模型中定义连接名称。

//BaseModel.php
protected $connection = 'mysql';
//BaseModelOne.php
protected $connection = 'mysqlOne';

您可以扩展这些模型以创建更多用于每个数据库表的模型。

0
0 Comments

在Laravel 5.1中,可以通过指定连接来操作数据库。默认情况下,Laravel使用默认连接。这很简单,对吧?

Laravel 5.1中的Eloquent如何处理呢?请看Abdulla的回答。

根据以上内容,我们可以得出问题的原因是在Laravel 5.1中,使用默认连接来操作数据库很简单,但是对于Eloquent操作却没有明确的说明。

解决方法是参考Abdulla的回答。

0