翼度科技»论坛 编程开发 PHP 查看内容

PHP laravel实现配置使用多数据库

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
有的时候,我们在开发的过程中需要连接多个数据库。
Laravel框架中早已为我们想到了这样的需求。
配置很简单。
在根目录下的/config/database.php文件中配置:
Laravel中为我们提前预设了多种类型的数据库连接
  1.   'connections' => [
  2.   
  3.         'sqlite' => [
  4.             'driver' => 'sqlite',
  5.             'url' => env('DATABASE_URL'),
  6.             'database' => env('DB_DATABASE', database_path('database.sqlite')),
  7.             'prefix' => '',
  8.             'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
  9.         ],
  10.   
  11.         'mysql' => [
  12.             'driver' => 'mysql',
  13.             'url' => env('DATABASE_URL'),
  14.             'host' => env('DB_HOST', '127.0.0.1'),
  15.             'port' => env('DB_PORT', '3306'),
  16.             'database' => env('DB_DATABASE', 'forge'),
  17.             'username' => env('DB_USERNAME', 'forge'),
  18.             'password' => env('DB_PASSWORD', ''),
  19.             'unix_socket' => env('DB_SOCKET', ''),
  20.             'charset' => 'utf8mb4',
  21.             'collation' => 'utf8mb4_unicode_ci',
  22.             'prefix' => '',
  23.             'prefix_indexes' => true,
  24.             'strict' => true,
  25.             'engine' => null,
  26.             'options' => extension_loaded('pdo_mysql') ? array_filter([
  27.                 PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
  28.             ]) : [],
  29.         ],
  30.   
  31.         'pgsql' => [
  32.             'driver' => 'pgsql',
  33.             'url' => env('DATABASE_URL'),
  34.             'host' => env('DB_HOST', '127.0.0.1'),
  35.             'port' => env('DB_PORT', '5432'),
  36.             'database' => env('DB_DATABASE', 'forge'),
  37.             'username' => env('DB_USERNAME', 'forge'),
  38.             'password' => env('DB_PASSWORD', ''),
  39.             'charset' => 'utf8',
  40.             'prefix' => '',
  41.             'prefix_indexes' => true,
  42.             'schema' => 'public',
  43.             'sslmode' => 'prefer',
  44.         ],
  45.   
  46.         'sqlsrv' => [
  47.             'driver' => 'sqlsrv',
  48.             'url' => env('DATABASE_URL'),
  49.             'host' => env('DB_HOST', 'localhost'),
  50.             'port' => env('DB_PORT', '1433'),
  51.             'database' => env('DB_DATABASE', 'forge'),
  52.             'username' => env('DB_USERNAME', 'forge'),
  53.             'password' => env('DB_PASSWORD', ''),
  54.             'charset' => 'utf8',
  55.             'prefix' => '',
  56.             'prefix_indexes' => true,
  57.         ],
  58.   
  59.     ],
复制代码
默认连接的是mysql配置,配置项是存储在根目录下的.env文件中的。
如果使用多数据连接,则只需要,根据你的数据库类型,在配置你需要的数据库连接就好了。
如下面所示:
我增加了一个mysql数据库连接和oracle数据库连接
  1. 'connections' => [
  2.   
  3.         'sqlite' => [
  4.             'driver' => 'sqlite',
  5.             'url' => env('DATABASE_URL'),
  6.             'database' => env('DB_DATABASE', database_path('database.sqlite')),
  7.             'prefix' => '',
  8.             'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
  9.         ],
  10.   
  11.         // 本地数据库,存储本地数据
  12.         'mysql' => [
  13.             'driver' => 'mysql',
  14.             'url' => env('DATABASE_URL'),
  15.             'host' => env('DB_HOST', 'xxxxx'),
  16.             'port' => env('DB_PORT', '3306'),
  17.             'database' => env('DB_DATABASE', xxxx),
  18.             'username' => env('DB_USERNAME', xxxx),
  19.             'password' => env('DB_PASSWORD', xxxxxxx'),
  20.             'unix_socket' => env('DB_SOCKET', ''),
  21.             'charset' => 'utf8mb4',
  22.             'collation' => 'utf8mb4_unicode_ci',
  23.             'prefix' => '',
  24.             'prefix_indexes' => true,
  25.             'strict' => false,
  26.             'engine' => null,
  27.             'options' => extension_loaded('pdo_mysql') ? array_filter([
  28.                 PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
  29.             ]) : [],
  30.         ],
  31.   
  32.         // 线上数据库,将本地数据,同步至线上数据
  33.         'mysql_base' => [
  34.             'driver' => 'mysql',
  35.             'read' => [
  36.                 'host' => env('DB_HOST_BASE', 'xxxxx'),
  37.             ],
  38.             'write' => [
  39.                 'host' => env('DB_HOST_BASE', 'xxxxx')
  40.             ],
  41.             'port' => env('DB_PORT_BASE', xxxx),
  42.             'database' => env('DB_DATABASE_BASE', xxxx),
  43.             'username' => env('DB_USERNAME_BASE', xxxxxx),
  44.             'password' => env('DB_PASSWORD_BASE', 'xxxxx'),
  45.             'unix_socket' => env('DB_SOCKET', ''),
  46.             'charset' => 'utf8mb4',
  47.             'collation' => 'utf8mb4_unicode_ci',
  48.             'prefix' => '',
  49.             'strict' => false,
  50.             'engine' => null,
  51.         ],
  52.   
  53.         'pgsql' => [
  54.             'driver' => 'pgsql',
  55.             'url' => env('DATABASE_URL'),
  56.             'host' => env('DB_HOST', '127.0.0.1'),
  57.             'port' => env('DB_PORT', '5432'),
  58.             'database' => env('DB_DATABASE', 'forge'),
  59.             'username' => env('DB_USERNAME', 'forge'),
  60.             'password' => env('DB_PASSWORD', ''),
  61.             'charset' => 'utf8',
  62.             'prefix' => '',
  63.             'prefix_indexes' => true,
  64.             'schema' => 'public',
  65.             'sslmode' => 'prefer',
  66.         ],
  67.   
  68.         'sqlsrv' => [
  69.             'driver' => 'sqlsrv',
  70.             'url' => env('DATABASE_URL'),
  71.             'host' => env('DB_HOST', 'localhost'),
  72.             'port' => env('DB_PORT', '1433'),
  73.             'database' => env('DB_DATABASE', 'forge'),
  74.             'username' => env('DB_USERNAME', 'forge'),
  75.             'password' => env('DB_PASSWORD', ''),
  76.             'charset' => 'utf8',
  77.             'prefix' => '',
  78.             'prefix_indexes' => true,
  79.         ],
  80.          // oracle 数据库连接
  81.         'oracle' => [
  82.             'driver' => 'oracle',
  83.             'host' => '210.30.64.37',
  84.             'port' => xxx,
  85.             'database' => '',
  86.             'service_name' => xxxxx,
  87.             'username' => xxx_xxxx,
  88.             'password' => xxxx_xxxx,
  89.             'charset' => 'AL32UTF8',
  90.             'prefix' => '',
  91.         ]
  92.   
  93.     ],
复制代码
我们在使用其余的数据库连接,如下方所示:
1:使用原生sql
  1. DB::connection('oracle')->select("SELECT * from  xxxxx WHERE XH = '{$personal_id}' AND XM = '{$name}'")
复制代码
2:使用laravel封装的数据库方法:
  1. $userinfo = DB::connection('mysql_base')->table('user')
  2.                                                 ->where('personal_id', '=', $data['personal_id'])
  3.                                                 ->where('name', '=', $data['name'])
  4.                                                 ->where('school_id', '=', $data['school_id'])
  5.                                                 ->select('id', 'type', 'school_id', 'personal_id', 'name', 'email', 'ilab_user', 'ilab_pwd')
  6.                                                 ->first();
复制代码
最后,还是强调一句,数据库连接相关的用户名,连接,密码之类的,一般还是写在.env文件中的,方便我们统一管理。
以上就是PHP laravel实现配置使用多数据库的详细内容,更多关于PHP laravel配置多数据库的资料请关注脚本之家其它相关文章!

来源:https://www.jb51.net/article/265600.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具