当前位置:Gxlcms > php框架 > Laravel如何同时连接多个数据库详解

Laravel如何同时连接多个数据库详解

时间:2021-07-01 10:21:17 帮助过:19人阅读

前言

上文说到thinkphp3.2同时连接两个数据库的文章,然后在总结下laravel同时连接

多个数据库的实例,方便新手学习,db连接以及model连接。

配置.env 文件

  1. DB_CONNECTION=mysql
  2. DB_HOST=127.0.0.1
  3. DB_PORT=3306
  4. DB_DATABASE=database_name
  5. DB_USERNAME=root
  6. DB_PASSWORD=root
  7. DB_HOST_TEST=127.0.0.1
  8. DB_PORT_TEST=3306
  9. DB_DATABASE_TEST=database_test
  10. DB_USERNAME_TEST=root
  11. DB_PASSWORD_TEST=root

配置 config/database.php

  1. // 默认连接mysql
  2. 'default' => env('DB_CONNECTION', 'mysql'),
  3. 'connections' => [
  4. 'sqlite' => [
  5. 'driver' => 'sqlite',
  6. 'database' => database_path('database.sqlite'),
  7. 'prefix' => '',
  8. ],
  9. 'mysql' => [
  10. 'driver' => 'mysql',
  11. 'host' => env('DB_HOST', '127.0.0.1'),
  12. 'port' => env('DB_PORT', '3306'),
  13. 'database' => env('DB_DATABASE', 'database_name'),
  14. 'username' => env('DB_USERNAME', 'root'),
  15. 'password' => env('DB_PASSWORD', 'root'),
  16. 'charset' => 'utf8',
  17. 'collation' => 'utf8_unicode_ci',
  18. 'prefix' => '',
  19. 'strict' => false,
  20. ],
  21. 'mysql_test' => [
  22. 'driver' => 'mysql',
  23. 'host' => env('DB_HOST_TEST', '127.0.0.1'),
  24. 'port' => env('DB_PORT_TEST', '3306'),
  25. 'database' => env('DB_DATABASE_TEST', 'database_test'),
  26. 'username' => env('DB_USERNAME_TEST', 'root'),
  27. 'password' => env('DB_PASSWORD_TEST', 'root'),
  28. 'charset' => 'utf8',
  29. 'collation' => 'utf8_unicode_ci',
  30. 'prefix' => '',
  31. 'strict' => false,
  32. ],
  33. ],

model实例(这个model将使用mysql_test连接)

  1. <?php
  2. namespace App\Model;
  3. use Illuminate\Database\Eloquent\Model;
  4. class Test extends Model
  5. {
  6. // 数据库'database_test'中的test表
  7. public $table = 'test';
  8. public $timestamps = false;
  9. protected $connection = 'mysql_test';
  10. }

model实例(这个model将采用默认的'mysql'连接)

  1. <?php
  2. namespace App\Model;
  3. use Illuminate\Database\Eloquent\Model;
  4. class Test extends Model
  5. {
  6. // 数据库'database'中的test表
  7. public $table = 'test';
  8. public $timestamps = false;
  9. // 以下代码可有可不、默认连接mysql
  10. protected $connection = 'mysql';
  11. }
  12. a、这个model将采用默认的'mysql'连接
  13. class UserModel extends Model
  14. {
  15. // 数据库'database'中的users表
  16. protected $table = "users";
  17. }
  18. b、

调用model实例

  1. // 以下是调用方法
  2. Test::get();
  3. Test::where('id',1)->first();

DB直接连接数据库

  1. // 连接mysql_test库
  2. DB::connection('mysql_test')->table('test')->where('id',1)->first();
  3. // 连接mysql库
  4. DB::connection('mysq')->table('test')->where('id',1)->first();
  5. // 连接mysql库
  6. DB::table('test')->where('id',1)->first();

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

人气教程排行