Php 拉韦尔蒙哥达->;getPdo()返回null
我正在使用Php 拉韦尔蒙哥达->;getPdo()返回null,php,mongodb,laravel-5.2,Php,Mongodb,Laravel 5.2,我正在使用DB::connection('mongodb')->getPdo()检查数据库是否已连接(如果未连接,phpunit会将某些测试标记为跳过),结果是->getPdo()总是返回null。我可以使用php artisan migrate创建新集合,并且可以将数据插入集合,这证明了该连接的有效性 环境: 操作系统:运行MAMP 3.2.0的windows 10 拉拉维尔:5.2.37 jenssegers/mongodb:3.0.2 编辑1:使用DB::connection('mongo
DB::connection('mongodb')->getPdo()
检查数据库是否已连接(如果未连接,phpunit会将某些测试标记为跳过),结果是->getPdo()
总是返回null。我可以使用php artisan migrate
创建新集合,并且可以将数据插入集合,这证明了该连接的有效性
环境:
操作系统:运行MAMP 3.2.0的windows 10
拉拉维尔:5.2.37
jenssegers/mongodb:3.0.2
编辑1:使用DB::connection('mongodb')->getMongoDB()->connected添加返回的对象
MongoDB\Collection {#647
+collectionName: "connected",
+databaseName: "destinycore",
+manager: MongoDB\Driver\Manager {#640},
+readConcern: MongoDB\Driver\ReadConcern {#642},
+readPreference: MongoDB\Driver\ReadPreference {#643},
+typeMap: [
"array" => "MongoDB\Model\BSONArray",
"document" => "MongoDB\Model\BSONDocument",
"root" => "MongoDB\Model\BSONDocument",
],
+writeConcern: MongoDB\Driver\WriteConcern {#644},
}
虽然令人困惑,但它实际上是正确的。此连接类从Laravel提供的基类扩展而来。它不会返回PDO实例,因为这是一个MongoDB连接。它实际上并不使用PDO,PDO只用于SQL相关数据库。如果您正在查找此软件包的“原始”连接,则应使用getMongoDB
方法,该方法返回一个MongoDB\Client
实例。无论如何,我要做的是验证是否已建立到数据库的连接。因为这是我集成测试中的一个助手方法。基本上,如果无法建立连接,phpunit将跳过测试。有什么方法可以帮助我吗?您应该能够查看->getMongoDB()->connected属性是否为true。它是公共的。@Miner3746如果这解决了它,你能将我的答案标记为正确吗?我已经尝试使用DB::connection('mongodb')->getMongoDB()->connected
但是,无论mongodb在我的机器中是向上还是向下,它总是返回mongodb\Collection
对象(在编辑1中显示)@Miner3746难道你就不能使用这个连接,看看它是否失败?我认为这不是80%的用例,而是更像边缘用例。不管怎么说,您似乎正在使用一个过时版本的MongoDB PHP扩展。而且->connected boolean甚至是一个不推荐使用的属性。使用新扩展时,连接是惰性的,因此您必须执行一个操作以确定凭据是否正确。