问题:laravel5.5 使用ORM方式操作同一台MySQL机器上的多个DB时,如何优雅的设置链接?
laravel默认会链接env
里配置的数据库,但是在不同的Model
里我需要指定另一个数据库而不是使用这个evn
里默认的;
查阅API手册后知,在Model
里指定$connection
即可,但是经过试验发现这个$connection
的值 是需要在/config/database.php
里新增一个array配置。
/config/database.php
:
//默认,会读取env里的mysql配置
'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', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
//自己新增的
'introduction_processQualityReport' => [
'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', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
经过测试发现,自己新增的这个数据key
必须和我想要在Model里单独指定使用的数据库名一样,否则就报错database not xxx 之类的。
问题1:
新增的那个数组introduction_processQualityReport
,个人感觉value里一大堆和默认的那个没啥区别,这样写有些累赘,不知道有没有别的更优雅的方式?(这2个数据库都是在同一台MySQL上)
laravel
同一个项目操作多个数据库只能这样用,其实也没那么累赘。