天天看点

tp5链接不同的mysql库_tp5如何链接多个数据库?

首先解决配置问题:

如果是正常的只有一个数据库的情况,官方推荐的做法是配置application目录下的database.php文件,把里面的参数改成自己的实际参数就可以了。

如果一个项目要用到多个数据库,就得为多个配置库各写一个配置文件。

前面提到的那个database.php是默认的数据库配置文件,TP会自己去加载它,它就是项目的默认数据库。在项目中直接用Db类去操作数据库,如果不加额外参数,默认也是读取的这个数据库。

按TP5文档里对配置文件的介绍,database.php是特殊的,所以在application目录下。如果要额外添加别的数据库配置,就不能也放在application目录下了。(同样也不推荐写在config.php里,因为那个文件已经够长了。而且按照强迫症的要求,已经有一个database.php独立出来了,第二个数据库的配置文件怎么能写在一坨配置数组中间?所以必须也是独立出来的。)

将database.php复制重命名,比如叫database_foo.php。按官方文档对于额外配置的说明,把这个文件放到application下的extra目录中,并修改成你的另一个数据库的参数。

然后验证配置有没有生效:

随便去一个控制器中,写一段打印出配置数组的代码,看看你添加的database_foo这个配置有没有生效。

dump(Config::get());

刷新一下页面,Ctrl+F搜索“database”,在配置数组的键中,应该有个“database”就是你的默认数据库,还有一个“databse_foo”就是你之前添加的2号数据库配置了。

看到这个,说明配置已经到位了。

如何使用多个数据库:

在你的业务代码中,想调用默认数据库的地方,就照常写:

Db::table("table1")->select();

想调用2号数据库的地方就写:

Db::connect("database_foo")->table("table1")->select();