【问题标题】:Use MongoDB with Symfony 4将 MongoDB 与 Symfony 4 一起使用
【发布时间】:2018-07-05 13:08:58
【问题描述】:

Symfony 4 和 MongoDB Atlas(云集群......但在本地我认为是一样的)我有一些小问题。我在使用 php 7.1.1 的 Windows 10 专业版上。

根据这篇文章

http://php.net/manual/en/mongodb.tutorial.library.php

这是我的管理控制器中的代码

 $mongo = new MongoClient();
        $dbs = $mongo->listDBs();
        print_r($dbs);

我收到此错误

Attempted to load class "MongoClient" from namespace "App\Controller\Admin".
Did you forget a "use" statement for "MongoClient"?

但是:我的扩展加载正确。

MongoDb 分机。 phpinfo() 输出

mongodb
MongoDB support enabled
MongoDB extension version   1.3.4
MongoDB extension stability     stable
libbson bundled version     1.8.2
libmongoc bundled version   1.8.2
libmongoc SSL   enabled
libmongoc SSL library   OpenSSL
libmongoc crypto    enabled
libmongoc crypto library    libcrypto
libmongoc crypto system profile     disabled
libmongoc SASL  enabled
Directive   Local Value Master Value
mongodb.debug   no value

composer.json

"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/mongodb": "^1.6",
"doctrine/mongodb-odm": "^1.2",
"doctrine/mongodb-odm-bundle": "^3.4",
"mongodb/mongodb": "^1.2",

作曲家版本

1.6

我也使用 mongodb-odm-bundle。这工作正常,但我想在我的项目中使用官方的遗留 mongodb 库(与集群连接没关系)。但是当我尝试使用 MongoClient() 我得到这个错误......

那么,我必须使用哪个“使用语句”?

【问题讨论】:

    标签: php mongodb symfony symfony4


    【解决方案1】:

    Symfony 4 + Mongodb Atlas 的正确配置

    1) 作曲家需要 mongodb/mongodb(仅此而已)

    控制器

    namespace App\Controller\your_controller;
    

    包括图书馆

    use MongoDB;
    

    CONNECTION(例如获取数据库列表)

    $connection = 'mongodb://___full_URI_MongoDBAtlas___';
    $client = new MongoDB\Client($connection);
    $dbs = $client->listDatabases();
    var_dump($dbs);
    

    【讨论】:

      【解决方案2】:

      Clients 类名称(我认为您的意思是 mongodb/mongodb,而不是来自 doctrine/mongodb)是:\MongoDB\Client

      所以更新你的代码应该可以解决问题:

      $mongo = new \MongoDB\Client();
      $dbs = $mongo->listDBs();
      print_r($dbs);
      

      【讨论】:

      • 嗨,迈克尔。在 \MongoDB 中使用“\”会给出错误。没有没有。 $mongo = 新的 MongoDB\Client();我认为这是正确的。但是执行此行输出是一个白页(不是错误)。没有给出 listdb... 是的:我的意思是 mongodb/mongodb...
      • 我想使用我在 .env 中使用的连接 setuo(如在 mongoOdmBundle 中),而无需在任何时候重复字符串连接。像这样的东西 $dm = $this->get('doctrine_mongodb')->getManager();在哪里学说_mongodb 是我的 symfony 连接设置
      • 哪个错误?空白页表示(静音)致命错误(找不到类?)。
      • 用 $mongo = new MongoDB\Client() 没关系。现在的问题是另一个问题。使用 $dbs = $mongo->listDatabases();没有结果。我读了这个php.net/manual/en/mongodb.tutorial.library.php
      • 啊,好吧,你应该可以让你的经理像这样获得 Mongo 连接:$this->get('doctrine_mongodb')->getManager()->getConnection()->getMongo();
      猜你喜欢
      • 2022-06-22
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多