Я использую пакет Doctrine ODM с Symfony 4. Попытка использовать формат сопоставления XML для документов и получение следующей ошибки:
No mapping file found named 'Post.mongodb.xml' for class 'App\Document\Post'.
Мой файл doctrine_mongodb.yaml:
doctrine_mongodb:
auto_generate_proxy_classes: '%kernel.debug%'
auto_generate_hydrator_classes: '%kernel.debug%'
connections:
default:
server: '%env(MONGODB_URL)%'
options: {}
default_database: '%env(MONGODB_DB)%'
document_managers:
default:
auto_mapping: true
mappings:
App:
is_bundle: false
type: xml
dir: '%kernel.project_dir%/src/Resources/config/doctrine'
prefix: App\Document\
alias: App
Документ SRC / Документ / Post.php файл:
namespace App\Document;
class Post
{
protected $id;
protected $title;
protected $text;
//Getters and setters
}
Файл сопоставления XML SRC / ресурсы / конфигурация / доктрина / Post.mongodb.xml:
<doctrine-mongo-mapping xmlns = "http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping
http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd">
<document name = "App\Document\Post">
<field fieldName = "id" id = "true" />
<field fieldName = "title" type = "string" />
<field fieldName = "text" type = "string" />
</document>
</doctrine-mongo-mapping>
Конфигурация композитора (требуется раздел):
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/mongodb-odm-bundle": "^3.5",
"symfony/console": "4.2.*",
"symfony/dotenv": "4.2.*",
"symfony/flex": "^1.1",
"symfony/framework-bundle": "4.2.*",
"symfony/yaml": "4.2.*"
}
Любые идеи?

Назовите файл сопоставления Post.dcm.xml.
Это соглашение - дизайн. Для документа App\Document\Namespace\Another это будет Namespace.Another.dcm.xml.
После всех описанных шагов я получаю ту же ошибку - No mapping file found named 'Post.mongodb.xml' for class 'App\Document\Post'. Может быть, у XML-файла сопоставления должно быть имя Post.mongodb.xml?
Может быть, какие у вашего проекта зависимости связаны с ODM?
К моему вопросу добавлена конфигурация composer.json.
В моих конфигах все было правильно из вопроса, за исключением завершающей косой черты в значении prefix.
Согласно документация:
The name of the mapping document must consist of the fully qualified name of the class, where namespace separators are replaced by dots (.).
Если вы предоставите префикс, который является пространством имен для ваших документов, вы получите имя файла сопоставления, например Post.mongodb.xml.
Пример:
PostApp\DocumentApp\DocumentPost.mongodb.xml соответственно.
Префикс должен быть
App\Document. Установите для автоматического сопоставления значение false. Очистить кеш.