Laravel框架-连接多个数据库

版权声明:本文为本小白原创文章,(转载请说明出处,标明链接) 文中若有错误,敬请指正! https://blog.csdn.net/qq_32737755/article/details/80926065

在开发过程中,有时候会碰到一个项目需要连接多个数据库的情况,这种情况在laravel中很好解决。

首先我们需要在数据库配置文件中增加数据库。
在config/database.php中:

    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],
//使用mysql 默认配置项
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            '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' => '', 更改为如下代码,方便在.env中配置
            'prefix' => env('DB_PREFIX', ''), 
            'strict' => false,
            'engine' => null,
        ],
 //下面这个就是 我添加的数据库配置项。
 //例如我的领个数据库在同一台服务器上。 host、port 、username、password等 我就可以不用修改。  database、prefix 数据库名和表前缀从新定义就行了。
// mysql_XXXXXX 这个代表第二个库,在model中会用到
        'mysql_XXXXXX' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE_XXXXXX', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => env('DB_PREFIX_XXXXXX', ''),
            'strict' => false,
            'engine' => null,
        ],

然后在 .env 文件中做配置
因为我的两个数据库在同一台服务器,地址、端口号、账号密码 都一样 所以我只需要增加一个数据库名,一个表前缀就行了

DB_CONNECTION=mysql
DB_HOST=666.666.666.666
DB_PORT=3306
DB_DATABASE=mysql1
DB_USERNAME=root
DB_PASSWORD=root
DB_PREFIX=prefix1

DB_DATABASE_XXXXXX=mysql2
DB_PREFIX_XXXXXX=prefix2

在model中调用,要用$connection声明链接的是哪一个数据库。
如本例子中,有两个一个为默认的mysql,另一个我添加的mysql_XXXXXX。
若用第一个库,如下

class IndexModel extends Model
{
    // 数据库mysql1中的user表 不声明,默认链接第一个 mysql
    protected $table = "user";
}
class UserModel extends Model
{
  // 数据库mysql2中的user表  声明$connection,链接 mysql_XXXXXX
    protected $connection = 'mysql_XXXXXX';
    protected $table = "user";
}

多个数据库链接,就这样实现了。

猜你喜欢

转载自blog.csdn.net/qq_32737755/article/details/80926065