用到了ThinkPHP框架的跨库调用,也就是多数据库调用。 综合文档,查看了下源码后写出的一种扩展性比较好的封装方法,可以调用多个数据库。

新建一个CommonModel模型

connection = C('db_connct_1');
 */
    public function __construct($name='',$tablePrefix='',$connection='')
    {
        if(APP_DEBUG){//调试模式开启
            $this->connection = [
                'db_type' => 'mysql',
                'db_user' => 'root',
                'db_pwd' => 'chengxiaobai',
                'db_host' => 'debug.chengxiaobai.cn',
                'db_port' => '3306',
                'db_name' => 'chengxiaobai',
                'db_charset' => 'utf8mb4',
            ];
        }else{//线上环境
            $this->connection = [
                'db_type' => 'mysql',
                'db_user' => 'root',
                'db_pwd' => 'chengxiaobai',
                'db_host' => 'db.chengxiaobai.cn',
                'db_port' => '3306',
                'db_name' => 'chengxiaobai',
                'db_charset' => 'utf8mb4',
            ];
        }
        parent::__construct($name,$tablePrefix,$connection);
    }
}

其他需要跨库的model继承这个model就好了

limit(10)->select());
    }
}

很多共用的操作有可以放在CommonModel里面进行了。

比如对取出来的数据进行统一的类型转换,PHP做后台开发的时候取出来的都是String类型的,对于android和ios这种强类型开发语言的客户端来说,那就需要转换类型再返回给客户端。

本作品由 程小白 创作,采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可,可自由转载、引用但需署名作者且注明文章出处。
原文地址:https://www.chengxiaobai.cn/php/thinkphp-cross-library-call.html