关于laravel学习--laravel多库操作

配置多个数据库配置,从而实现多个数据库的操作

       今天将给大家讲解如何在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();

这样就是单库跟多库链接的时候的区别,好了,今天就给大家讲到这里~。