联系官方销售客服

1835022288

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


    这个文件改成下面的内容试一试
    <?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
    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
    @迅睿框架联合创始人:谢谢,可行