首页 > 解决方案 > XML 格式的 Doctrine ODM 捆绑文档映射

问题描述

我正在将 Doctrine ODM 捆绑与 Symfony 4 一起使用。尝试对文档使用 XML 映射格式并收到以下错误:

No mapping file found named 'Post.mongodb.xml' for class 'App\Document\Post'.

我的学说_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/Document/Post.php文件:

namespace App\Document;

class Post
{
    protected $id;

    protected $title;

    protected $text;

//Getters and setters
}

XML 映射文件src/Resources/config/doctrine/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.*" } 有什么想法吗?

标签: mongodbsymfonydoctrine-ormdoctrine-odmodm

解决方案


我的配置中的一切都是正确的,除了值中的斜线prefix

根据文档

映射文档的名称必须由类的完全限定名称组成,其中名称空间分隔符由点 (.) 替换。

如果您提供前缀,即文档的命名空间,您将获得如下映射文件名Post.mongodb.xml

例子:

  • Post文档的命名空间App\Document
  • 您的映射前缀App\Document
  • 分别映射文件名Post.mongodb.xml

推荐阅读