请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

tp6不支持动态数据库连接?

请问tp6是否取消了动态链接数据库? tp5是可以的
图片描述
提示错误:
图片描述

正在回答 回答被采纳积分+3

2回答

天经地义 2021-01-17 13:44:10

回复 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){
    ...
}


0 回复 有任何疑惑可以回复我~
天经地义 2021-01-16 23:45:19
Config::set($config, 'database');

$db_instance = Db::connect('mysql');

同学你可以试一下这种方法

0 回复 有任何疑惑可以回复我~
  • 提问者 stevenfung #1
    我只是想问 tp6是否取消了这种动态链接数据库的方式
    我知道可以用其他方式!
    回复 有任何疑惑可以回复我~ 2021-01-17 00:58:01
  • 天经地义 回复 提问者 stevenfung #2
    回复无法贴代码块,我新开了一个回复
    回复 有任何疑惑可以回复我~ 2021-01-17 13:44:51

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信