mongodb - Symfony2 和 MongoDB 注释/映射无法识别

标签 mongodb symfony doctrine-orm symfony-2.3 doctrine-mongodb

我按照the cookbook中描述的步骤进行操作。但是当我运行 doctrine:mapping:infodoctrine:generate:entities 时,学说会忽略我的文件。

这是代码,也许有人有建议。

自动加载.php

use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;

/**
 * @var $loader ClassLoader
 */
$loader = require __DIR__.'/../vendor/autoload.php';

AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

use Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver;
AnnotationDriver::registerAnnotationClasses();

return $loader;

Composer .json

"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/mongodb-odm": "1.0.*@dev",
"doctrine/mongodb-odm-bundle": "3.0.*@dev",
"doctrine/doctrine-bundle": "1.2.*",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"doctrine/doctrine-migrations-bundle": "dev-master",

config.yml:

doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
    default_database: test_database
    document_managers:
        default:
            auto_mapping: true

实体:

<?php
// src/Acme/StoreBundle/Document/Product.php
namespace Anchorbrands\Bundle\LandingpageBundle\Entity;

use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;

/**
* @MongoDB\Document
*/
class Product
{
/**
* @MongoDB\Id
*/
protected $id;

/**
* @MongoDB\String
*/
protected $name;

/**
* @MongoDB\Float
*/
protected $price;
}

最佳答案

错误的命名空间/文件夹:)

namespace Anchorbrands\Bundle\LandingpageBundle\Entity;

应该是

namespace Anchorbrands\Bundle\LandingpageBundle\Document;

文档通常位于Document文件夹中。

实体文件夹/命名空间适用于 ORM,而非 ODM。

查看文档 here .

命令错误

对于 mongodb/doctrine odm,您需要使用...

app/console doctrine:mongodb:generate:documents AnchorbrandsLandingpageBundle

...而doctrine:generate:entities用于教义orm。

关于mongodb - Symfony2 和 MongoDB 注释/映射无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103934/

相关文章:

c# - 失去连接后MongoDB从当前位置继续

Node.JS 等待变量被设置

mongodb - 删除MongoDB中特定属性类型的最小元素

sql - 为 Symfony2 正确加入 Doctrine2

mongodb - 在 MongoDB 中是否有命名集合的约定?

Symfony2 类型为 "object or array"的预期参数,给定为 "string"

php - Symfony 2 中的 Doctrine 2 - 通过关联过滤 QueryBuilder

php - PDO异常找不到驱动程序

php - Maker Bundle 仅支持注释映射

php - Symfony2 ManytoMany 双向关系 - 如何手动持久化