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,

        ],

 //添加第二个数据库信息,mysql_### 这个代表第二个库,在model中会用到

        '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('DB_PREFIX_###', ''),

            'strict' => false,

            'engine' => null,

        ],

然后在 .env 文件中做配置,两个数据库在同一台服务器,地址、端口号都一样,但是数据库用户名和密码不同

 

DB_CONNECTION=mysql

DB_HOST=666.666.666.666

DB_PORT=3306

DB_DATABASE=test1

DB_USERNAME=root

DB_PASSWORD=123456

DB_PREFIX=prefix1

 

DB_DATABASE_###=test2

DB_PREFIX_###=prefix2

DB_USERNAME_###=abc

DB_PASSWORD_###=abc

在model中调用,要用$connection声明链接的是哪一个数据库。

如本例子中,一个为默认的mysql,另一个mysql_###

如下:

class IndexModel extends Model

{

    // 数据库test1中的student表 不声明,默认链接第一个 mysql

    protected $table = "student";

}

class UserModel extends Model

{

  // 数据库test2中的student表  声明$connection,链接 mysql_###

    protected $connection = 'mysql_###';

    protected $table = "student";

}

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

 

你可能感兴趣的:(PHP)