TP5配置database.php使用多个数据库

TP5配置使用多个数据库方法

1、修改database.php


// +----------------------------------------------------------------------

return [

    'db1' => [
        // 数据库类型
        'type' => 'mysql',
        // 服务器地址
        'hostname' => '192.168.1.1',
        // 数据库名
        'database' => 'db1',
        // 用户名
        'username' => 'root',
        // 密码
        'password' => 'password',
        // 端口
        'hostport' => '3306',
        // 连接dsn
        'dsn' => '',
        // 数据库连接参数
        'params' => [],
        // 数据库编码默认采用utf8
        'charset' => 'utf8',
        // 数据库表前缀
        'prefix' => 'think_',
        // 数据库调试模式
        'debug' => true,
        // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
        'deploy' => 0,
        // 数据库读写是否分离 主从式有效
        'rw_separate' => false,
        // 读写分离后 主服务器数量
        'master_num' => 1,
        // 指定从服务器序号
        'slave_no' => '',
        // 是否严格检查字段是否存在
        'fields_strict' => true,
        // 数据集返回类型
        'resultset_type' => 'array',
        // 自动写入时间戳字段
        'auto_timestamp' => false,
        // 时间字段取出后的默认时间格式
        'datetime_format' => 'Y-m-d H:i:s',
        // 是否需要进行SQL性能分析
        'sql_explain' => false
    ],
    'db2' => [
        // 数据库类型
        'type' => 'mysql',
        // 服务器地址
        'hostname' => '222.7.2.2',
        // 数据库名
        'database' => 'db2',
        // 用户名
        'username' => 'root',
        // 密码
        'password' => 'password',
        // 端口
        'hostport' => '3306',
        // 连接dsn
        'dsn' => '',
        // 数据库连接参数
        'params' => [],
        // 数据库编码默认采用utf8
        'charset' => 'utf8',
        // 数据库表前缀
        'prefix' => 'big_',
        // 数据库调试模式
        'debug' => true,
        // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
        'deploy' => 0,
        // 数据库读写是否分离 主从式有效
        'rw_separate' => false,
        // 读写分离后 主服务器数量
        'master_num' => 1,
        // 指定从服务器序号
        'slave_no' => '',
        // 是否严格检查字段是否存在
        'fields_strict' => true,
        // 数据集返回类型
        'resultset_type' => 'array',
        // 自动写入时间戳字段
        'auto_timestamp' => false,
        // 时间字段取出后的默认时间格式
        'datetime_format' => 'Y-m-d H:i:s',
        // 是否需要进行SQL性能分析
        'sql_explain' => false,
    ],

];

2、修改db.php 路径: thinkphp/think/libary/db.php 

修改connect方法

添加代码:

public static $config_db=[];
if(!empty($config))
{
    self::$config_db = $config;
}
if(empty($config) && !empty(self::$config_db))
{
    $config = self::$config_db;
}

    /**
     * @var int 执行次数
     */
    public static $executeTimes = 0;
    public static $config_db=[];

    /**
     * 数据库初始化,并取得数据库类实例
     * @access public
     * @param  mixed       $config 连接配置
     * @param  bool|string $name   连接标识 true 强制重新连接
     * @return Connection
     * @throws Exception
     */
    public static function connect($config = [], $name = false)
    {
        if(!empty($config))
        {
            self::$config_db = $config;
        }
        if(empty($config) && !empty(self::$config_db))
        {
            $config = self::$config_db;
        }

        if (false === $name) {
            $name = md5(serialize($config));
        }

        if (true === $name || !isset(self::$instance[$name])) {
            // 解析连接参数 支持数组和字符串
            $options = self::parseConfig($config);

            if (empty($options['type'])) {
                throw new \InvalidArgumentException('Undefined db type');
            }

            $class = false !== strpos($options['type'], '\\') ?
            $options['type'] :
            '\\think\\db\\connector\\' . ucwords($options['type']);

            // 记录初始化信息
            if (App::$debug) {
                Log::record('[ DB ] INIT ' . $options['type'], 'info');
            }

            if (true === $name) {
                $name = md5(serialize($config));
            }

            self::$instance[$name] = new $class($options);
        }

        return self::$instance[$name];
    }

3、使用构造函数,正常使用,语法不变

 

 

class Detect extends Controller
{
    public function __construct()
    {
        Db::$config_db=config("database.db1");

    }
    /**
     *
     * 6、提交测评接口
     * 本接口用于提交测评
     */
    public function add()
    {
        $userId = session('userId');       //获取session
        if ($userId == "") {
            return array("status" => '1', 'error' => ['请登录']);
        }
        $id = input('post.fileId'); //文件ID
        $result = Db::field('id,file_name,app_name,version,size,path')
            ->table(['app_file' => 'file'])
            ->where('file.id', $id)
            ->find();
        print_r($result);
}

4、其他应用模块(application2)使用

class User extends Controller
{
    public function __construct()
    {
        $db = include $file = "../honor/database.php";
        Db::$config_db = $db['db1'];

    }

    /**
     * 1、用户基本信息
     */
    public function userDetail()
    {

        $userId = session('userId');       //获取session 

        if ($userId == "") {
            exit(json_encode(array("status" => '1', 'error' => ['用户信息未找到'])));
        }

        $result = Db::field('user.user_name userName,user.head,user.mobile,user.email')
            ->table(['t_user' => 'user'])
            ->where('user.id', $userId)
            ->where('user.status', '0')
            ->find();
        if ($result) {
            exit(json_encode(array("status" => '0', 'data' => $result)));
        } else {
            exit(json_encode(array("status" => '1', 'error' => ['用户信息未找到'])));
        }

    }
}

(完)

 

 

 

你可能感兴趣的:(Thinkphp)