太阳成游戏网站

联系官方销售客服

QQ1835022299

028-61286886

太阳成游戏网站框架 版主:太阳成游戏网站框架研发组
使用了thinkphp的Db,要怎么链接多个数据库呢?
类型:太阳成游戏网站CMS 更新时间:2021-10-13 18:19:40

框架中可以链接多个数据库,如果使用了thinkphp的Db,要怎么链接多个数据库呢?

还是一样的方法吗?我在config/database.php添加了多个数据库链接,按照thinkphp的方法写,却链接不上

回帖
  • 太阳成游戏网站框架联合创始人
    #1楼    太阳成游戏网站框架联合创始人
    2021-10-13 17:05:16
    Chrome 0


    这个文件改成下面的内容试一试
     '',
            'hostname'     => 'localhost',
            'username'     => '',
            'password'     => '',
            'database'     => '',
            'DBDriver'     => 'MySQLi',
            'DBPrefix'     => '',
            'pConnect'     => false,
            'DBDebug'     => true,
            'cacheOn'     => true,
            'cacheDir'     => WRITEPATH.'database/',
            'charset'      => 'utf8mb4',
            'DBCollat'     => 'utf8mb4_general_ci',
            'swapPre'      => '',
            'encrypt'      => false,
            'compress'     => false,
            'strictOn'     => false,
            'failover'     => []
        ];
    
        //--------------------------------------------------------------------
    
        public function __construct()
        {
            parent::__construct();
    
            $db = [];
            require ROOTPATH.'config/database.php';
    
            foreach ($this->default as $p => $t) {
                foreach ($db as $name => $v) {
                    $this->$name[$p] = isset($v[$p]) ? $v[$p] : $t;
                }
            }
    
            // 判断数据库名称的规范性
            if (is_numeric($this->default['database'])) {
                exit('数据库名称不能是数字');
            } elseif (strpos($this->default['database'], '.') !== false) {
                exit('数据库名称不能存在.号');
            }
    
            // Thinkphp数据库配置
            if (is_file(dirname(COMPOSER_PATH).'/topthink/think-orm/src/DbManager.php')) {
    			$cfg = [
                    // 默认数据连接标识
                    'default'     => 'default',
                    // 数据库连接信息
                    'connections' => [
                    ],
                ];
    			foreach ($db as $name => $v) {
    				$cfg['connections'][$name] = [
    					// 数据库类型
    					'type'     => 'mysql',
    					// 主机地址
    					'hostname' => $v['hostname'],
    					// 用户名
    					'username' => $v['username'],
    					'password' => $v['password'],
    					// 数据库名
    					'database' => $v['database'],
    					// 数据库编码默认采用utf8mb4
    					'charset'  => 'utf8mb4',
    					// 数据库表前缀
    					'prefix'   => $v['DBPrefix'],
    					// 数据库调试模式
    					'debug'    => true,
    				];
                }
                \think\facade\Db::setConfig($cfg);
            }
    
        }
    
        //--------------------------------------------------------------------
    
    
    }
    满意答案
  • 开黑吗我玩辅助
    #2楼    开黑吗我玩辅助
    2021-10-13 18:05:21
    Chrome 0
    这方法可行吗
  • zongxing
    #3楼    zongxing
    2021-10-13 18:19:17
    Chrome 0
    太阳成游戏网站框架联合创始人 谢谢,可行
  • zongxing
    #4楼    zongxing
    2021-10-13 18:19:25
    Chrome 0
    开黑吗我玩辅助 可行
  • zongxing
    #5楼    zongxing
    2021-10-13 18:19:40
    Chrome 0
    @太阳成游戏网站框架联合创始人:谢谢,可行