tp6不支持动态数据库连接?
来源:12-10 利用高性能的redis延迟队列处理无效订单(上)
stevenfung
2021-01-15
请问tp6是否取消了动态链接数据库? tp5是可以的
提示错误:
写回答
2回答
-
天经地义
2021-01-17
回复 stevenfung:TP6没有取消动态链接,只是使用方法变了,需要事先定义链接的参数在database.php的配置文件中,使用时只传connections里的key
$connection属性只接收database.php文件中connections里所定义的链接,是字符串,而不是整个数组,
因为vendor/topthink/think-orm/src/DbManager.php中的connect方法如下,第一个参数是接收字符串或null,配置的标识,而不是整个配置参数,如果为null会找到默认的标识
所以要使用动态链接最好事先在database.php定义好,不然只能Config::set动态修改database.php的配置内容
/** * 创建/切换数据库连接查询 * @access public * @param string|null $name 连接配置标识 * @param bool $force 强制重新连接 * @return ConnectionInterface */ public function connect(string $name = null, bool $force = false) { return $this->instance($name, $force); }
下面是tp5.1的链接方法,接收的是整个配置参数,而不是标识
/** * 连接数据库方法 * @access public * @param array $config 连接参数 * @param integer $linkNum 连接序号 * @param array|bool $autoConnection 是否自动连接主数据库(用于分布式) * @return PDO * @throws Exception */ public function connect(array $config = [], $linkNum = 0, $autoConnection = false){ ... }
00 -
天经地义
2021-01-16
Config::set($config, 'database'); $db_instance = Db::connect('mysql');
同学你可以试一下这种方法
022021-01-17
相似问题