thinkphp5.0.24 配置mongodb

一,环境

  thinkphp5.0.24 php 7.2 mongo

  mongodb 安装不再缀述,主要讲下tp5如果集成mongodb可以正常的查询,如果不清楚,要花费不少时间去排查。

 

二,下载think-mongo 1.*版本

  直接用composer require topthink/think-mongo=1.*

  在tp5框架vendor目录会下生成think-mongo相的 Connection.php Builder.php Query.php

 

三,配置tp5

  

return [

    // 数据库类型
    ‘type‘        => ‘\think\mongo\Connection‘,
    // Query对象
    ‘query‘           => ‘\think\mongo\Query‘,
    // 数据库连接DSN配置
    ‘dsn‘        => ‘‘,

    ‘hostname‘    => ‘127.0.0.1‘,
    // 验证数据库
    ‘database‘    => ‘admin‘,
    //连接数据库
    ‘db‘ => ‘conf‘,
    // 数据库用户名
    ‘username‘    => ‘sa‘,
    // 数据库密码
    ‘password‘    => ‘123456‘,
    // 数据库连接端口
    ‘hostport‘    => ‘27017‘,

    // 数据库编码默认采用utf8
    ‘charset‘     => ‘utf8‘,
    // 数据库表前缀
    ‘prefix‘      => ‘‘,
    //是否返回id
    ‘pk_convert_id‘ => false,
    // 副本集
    ‘is_replica_set‘  => false,
];

如果有多个数据库需要切换,可以在config.php里配置类似如下:

  

 ‘MONGO_USER‘ => [
        // 数据库类型
        ‘type‘        => ‘\think\mongo\Connection‘,
        // Query类
        ‘query‘           => ‘\think\mongo\Query‘,
        // 数据库连接DSN配置
        ‘dsn‘         => ‘‘,
        // 服务器地址
        ‘hostname‘ => ‘127.0.0.1‘,
        // 验证数据库
        ‘database‘    => ‘admin‘,
        // 数据库名
        ‘db‘    => ‘user‘,
        // 数据库用户名
        ‘username‘    => ‘sa‘,
        // 数据库密码
        ‘password‘    => ‘123456‘,
        // 数据库连接端口
        ‘hostport‘    => ‘27017‘,
        // 数据库连接参数x
        ‘params‘      => [],
        // 数据库编码默认采用utf8
        ‘charset‘     => ‘utf8mb4‘,
        // 数据库表前缀
        ‘prefix‘      => ‘‘,
        ‘pk_convert_id‘ => false,
        ‘debug‘     =>  false,
        // 副本集
        //‘is_replica_set‘  => true,
    ],

这样连接的时候用Db::connect(‘MONGO_USER‘)就可以随意的切库了。

 

三,针对think-mongo的一个底层修改,重要

  

$this->links[$linkNum] = new Manager($host, $this->config[‘params‘]);

            if($config[‘db‘]){
                //切换数据库
                $this->db($config[‘db‘]);
            }

在Connection.php里一定要加上这段代码,不然一直会查询admin数据库的。

  

  

thinkphp5.0.24 配置mongodb

上一篇:Intellij IDEA出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver处理办法


下一篇:如何保证缓存(redis)与数据库(MySQL)的一致性