我有同样的问题,我仍然期待得到一个真正的解决方案。
我直接用以下代码编辑了doctrine-mongo-odm-module(src/DoctrineMongoODMModule/Service/ConnectionFactory.php)中的ConnectionFactory.php
//...
if (empty($connectionString)) {
$connectionString = 'mongodb+srv://'; //prev: 'mongodb://'
$user = $options->getUser();
$password = $options->getPassword();
$dbName = $options->getDbName();
if ($user && $password) {
$connectionString .= $user . ':' . $password . '@';
}
$connectionString .= $options->getServer() /*. ':' . $options->getPort()*/;
if ($dbName) {
$connectionString .= '/' . $dbName;
}
} else {
// parse dbName from the connectionString
$dbStart = strpos($connectionString, '/', 11);
if ($dbStart !== false) {
$dbEnd = strpos($connectionString, '?');
$dbName = substr(
$connectionString,
$dbStart + 1,
$dbEnd ? ($dbEnd - $dbStart - 1) : PHP_INT_MAX
);
}
}
//...
在我的连接文件中:
//...
'odm_default' => array(
'server' => '<host>',
'port' => '',
'connectionString' => null,
'user' => '<user>',
'password' => '<psw>',
'dbname' => '<db>',
'options' => array()
),
//...
我认为这是最糟糕的解决方案(编辑供应商的文件),但在我的情况下有效,将其作为临时修复