业务经理

微信扫描以上二维码

028-61286886

技术咨询

使用了thinkphp的Db,要怎么链接多个数据库呢?

迅睿框架 更新 2021-10-13 18:19:40 zongxing

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

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

方案

  • 迅睿框架联合创始人 #1 · 2021-10-13 17:05:16
    满意答案


    这个文件改成下面的内容试一试
    <?php namespace Config;
    /**
     * {{www.xunruicms.com}}
     * {{迅睿内容管理框架系统}}
     * 本文件是框架系统文件,二次开发时不可以修改本文件
     **/
    
    use CodeIgniter\Database\Config;
    
    /**
     * Database Configuration
     */
    class Database extends Config
    {
        /**
         * The directory that holds the Migrations
         * and Seeds directories.
         * @var string
         */
        public $filesPath = WRITEPATH.'database/';
    
        /**
         * Lets you choose which connection group to
         * use if no other is specified.
         *
         * @var string
         */
        public $defaultGroup = 'default';
    
        /**
         * The default database connection.
         *
         * @var array
         */
        public $default = [
            'DSN'          => '',
            '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
    这方法可行吗
  • zongxing #3 · 2021-10-13 18:19:17
    迅睿框架联合创始人 谢谢,可行
  • zongxing #4 · 2021-10-13 18:19:25
    开黑吗我玩辅助 可行
  • zongxing #5 · 2021-10-13 18:19:40
    @迅睿框架联合创始人:谢谢,可行

迅睿系统漏洞

AI文章生成器
AI文章生成器(2026-09-20)
任务拆分独立配置 新增AI生成关键词 新增指令模板 新增品牌信...
GEO系统
GEO系统(2026-09-20)
后台 AEO 与运营端对齐:区域、跑批、CSV、补强、剧本均可在迅睿...
多语言翻译Seolang
多语言翻译Seolang(2026-09-18)
1. HTML lang 无需修改模板,自动适配当前语种页面 lan...
GeoSeo工具箱
GeoSeo工具箱(2026-09-18)
修正菜单规范
后台二次登陆验证
后台二次登陆验证(2026-09-18)
新增邮箱验证 新增短信验证
京东云短信
京东云短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
创蓝短信
创蓝短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
火山引擎短信
火山引擎短信(2026-09-17)
- 验证码有效期改只读展示 - 有效期旁新增系统设置按钮 - 保...
外贸多语言建站
外贸多语言建站(2026-09-17)
优化独立内容过滤机制