tp5.1调用多个数据库

如果是同一台主机上的数据库的话,可以使用以下方法:

namespace app\api\controller;
use think\Controller;
use think\Db;

......

$data = Db::table('数据库名.表名')->语句();

通过  Db::connect  链接对应的数据库,然后调用

不要修改 config/database.php  下的数据库配置,这样正常调用model正常调用数据库不会受到影响

建立一个公共的继承类 Base,写入这个公用方法

*此方法有个bug,如果$db重复执行一个语句的话会无法触发,所以建议使用上面的方式

namespace app\api\controller;
use think\Controller;
use think\Db;

class Base extends Controller
{
    public function initialize()
    {
    }

    public function connect()
    {
        $db = Db::connect([
            'type'            => 'mysql',
            'hostname'        => '数据库ip',
            'database'        => '数据库名',
            'username'        => '数据库名',
            'password'        => '数据库密码',
            'hostport'        => '端口号',
            'charset'         => 'utf8',
        ]);
        return $db;
    }
}

其他类调用方法:

namespace app\api\controller;

class Index extends Base
{
    public function index()
    {
        $db = Base::connect();
        $res = $db->table('要操作的表名')->select();
        return json($res);
    }
}

 

你可能感兴趣的:(tp5.1调用多个数据库)