我将Symctony 4与Doctrine ODM捆绑在一起使用。 尝试对文档使用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 / 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.*"
}
有什么想法吗?
答案 0 :(得分:0)
命名映射文件Post.dcm.xml
。
此约定由design使用。对于App\Document\Namespace\Another
文档,它将为Namespace.Another.dcm.xml
。
答案 1 :(得分:0)
在我的配置中,从prefix
值的问题execpt尾部斜杠开始,一切都正确。
映射文档的名称必须包含该类的完全限定名称,其中名称空间分隔符由点(。)代替。
如果提供前缀(即文档的命名空间),则将获得映射文件名,例如Post.mongodb.xml
示例:
Post
文档App\Document
的命名空间App\Document
Post.mongodb.xml
。