今天将给大家讲解如何在laravel框架种,实现多个数据库的操作,做法也是相当的简单,下面开始我们的操作,第一步数据库配置,我们先在根目录下的config/database.php文件中配置我们的数据库(多个),我这里是配置两个数据库,代码如下:
'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', ''),
'timezone' => env('DB_TIMEZONE', '+00:00'),
'strict' => false,
],
'mysql_data2' => [
'driver' => 'mysql',
'host' => env('DB_DATA2_HOST', 'localhost'),
'port' => env('DB_DATA2_PORT', 3306),
'database' => env('DB_DATA2_DATABASE', 'forge'),
'username' => env('DB_DATA2_USERNAME', 'forge'),
'password' => env('DB_DATA2_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => env('DB_PREFIX', ''),
'timezone' => env('DB_TIMEZONE', '+00:00'),
'strict' => false,
],
配置完我们的数据库后,我们在根目录的数据库配置文件中,配置我们两个数据库的用户名跟密码,以及数据库名,代码如下:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=czy-service-goods
DB_USERNAME=root
DB_PASSWORD=
DB_DATA2_HOST=127.0.0.1
DB_DATA2_PORT=3306
DB_DATA2_DATABASE=czy-service-goods2
DB_DATA2_USERNAME=root
DB_DATA2_PASSWORD=
完成以上操作,我们便完成了数据库的配置,接下来,我们将要在业务中调用数据库,跟一个数据库的时候,其实相差不多,只是多了一个链接数据库方法而已。下面是我自己底层封装好的一个获取单条数据的方法,代码如下:
static function dbGet($connection='',$table, $id, $lockForUpdate = false)
{
if ($lockForUpdate) {
return DB::connection($connection)->table($table)
->where('id', intval($id))->lockForUpdate()->first();
} else {
return DB::connection($connection)->table($table)
->where('id', intval($id))->first();
}
}
多库操作的时候其实只是多了DB::connection('数据库名'),我这里的值是从外面传进来的,根据自己的业务不同,链接的数据库不同,这样我们就完成了多库的操作。
细心的网友们会发现,以前单库的链接方式是这样的:
return DB::table($table)->where('id', intval($id))->lockForUpdate()->first();
现在是这样的:
return DB::connection($connection)->table($table)
->where('id', intval($id))->lockForUpdate()->first();
这样就是单库跟多库链接的时候的区别,好了,今天就给大家讲到这里~。
更多文章请关注微信公众号