当前位置:Gxlcms > php框架 > thinkphp5多数据库配置介绍

thinkphp5多数据库配置介绍

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

ThinkPHP遵循惯例重于配置的原则,系统会按照下面的顺序来加载配置文件(配置的优先顺序从右到左)。

惯例配置->应用配置->模块配置->动态配置

惯例配置:核心框架内置的配置文件,无需更改。

应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。

模块配置:每个模块的配置文件(相同的配置参数会覆盖应用配置),有部分配置参数模块配置是无效的,因为已经使用过。

动态配置:主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。

TP5.1的数据库配置文件在application\config\database.php中

当然,在application\模块名\config\database.php(模块配置)中的配置,优先级会比在application\config\database.php(应用配置)中高

比如同时在模块配置和在应用配置中配置数据库连接,那么会优先使用模块配置,如果模块配置中没有,那么会去找应用配置中的配置信息。动态配置的优先级最高。

我们只需要在控制器和数据库配置文件中操作即可,无需用到模型

  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: liu21st <liu21st@gmail.com>
  10. // +----------------------------------------------------------------------
  11. return [
  12. // 数据库类型
  13. 'type' => 'mysql',
  14. // 服务器地址
  15. 'hostname' => '127.0.0.1',
  16. // 数据库名
  17. 'database' => '',
  18. // 用户名
  19. 'username' => 'root',
  20. // 密码
  21. 'password' => '',
  22. // 端口
  23. 'hostport' => '',
  24. // 连接dsn
  25. 'dsn' => '',
  26. // 数据库连接参数
  27. 'params' => [],
  28. // 数据库编码默认采用utf8
  29. 'charset' => 'utf8',
  30. // 数据库表前缀
  31. 'prefix' => '',
  32. // 数据库调试模式
  33. 'debug' => true,
  34. // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
  35. 'deploy' => 0,
  36. // 数据库读写是否分离 主从式有效
  37. 'rw_separate' => false,
  38. // 读写分离后 主服务器数量
  39. 'master_num' => 1,
  40. // 指定从服务器序号
  41. 'slave_no' => '',
  42. // 自动读取主库数据
  43. 'read_master' => false,
  44. // 是否严格检查字段是否存在
  45. 'fields_strict' => true,
  46. // 数据集返回类型
  47. 'resultset_type' => 'array',
  48. // 自动写入时间戳字段
  49. 'auto_timestamp' => false,
  50. // 时间字段取出后的默认时间格式
  51. 'datetime_format' => 'Y-m-d H:i:s',
  52. // 是否需要进行SQL性能分析
  53. 'sql_explain' => false,
  54. // Builder类
  55. 'builder' => '',
  56. // Query类
  57. 'query' => '\\think\\db\\Query',
  58. // 是否需要断线重连
  59. 'break_reconnect' => false,
  60. // 断线标识字符串
  61. 'break_match_str' => [],
  62. 'db_config1' => [
  63. // 数据库类型
  64. 'type' => 'sqlsrv',
  65. // 服务器地址
  66. 'hostname' => '192.168.1.1',
  67. // 用户名
  68. 'username' => 'username',
  69. // 密码
  70. 'password' => 'passwd',
  71. // 数据库名称
  72. 'database' => 'dbname',
  73. ],
  74. 'db_config2' => [
  75. // 数据库类型
  76. 'type' => 'mysql',
  77. // 服务器地址
  78. 'hostname' => '192.168.1.2',
  79. // 用户名
  80. 'username' => 'username',
  81. // 密码
  82. 'password' => 'passwd',
  83. // 数据库名称
  84. 'database' => 'dbname',
  85. ]
  86. ];

db_config1和db_config2可以看作是两个不同的数据库连接

我们在控制器中就可以这样调用不同的数据库

  1. <?php
  2. use think\Db;
  3. $verify1 = Db::connect('db_config1')->table('tablename')->where([
  4. ['username','=',$username],
  5. ['password','=',$password],
  6. ])->find();
  7. $verify2 = Db::connect('db_config2')->table('tablename')->where([
  8. ['username','=',$username],
  9. ['password','=',$password],
  10. ])->find();

推荐教程:《TP5》

以上就是thinkphp5多数据库配置介绍的详细内容,更多请关注Gxlcms其它相关文章!

人气教程排行