使用作曲家为Symfony2设置MongoDB



我是Symfony2的新手,我遵循了Symfony2网站上的指南,使用Composer(也是我安装Symfony2)

安装MongoDB学说捆绑包。

http://symfony.com/doc/master/bundles/doctrinemongodbbundle/index.html

我将行添加到app/autoload.php:

use DoctrineODMMongoDBMappingDriverAnnotationDriver;
AnnotationDriver::registerAnnotationClasses();

和app/appkernal.php

new DoctrineBundleMongoDBBundleDoctrineMongoDBBundle(),
指南中建议的

,但是当我尝试加载Symfony应用程序(这只是演示应用程序)时,我会收到以下错误:

InvalidArgumentException: The service definition "doctrine_mongodb.odm.document_manager" does not exist.

[还有更多跟踪,让我知道这是否有用]

如果我评论了我添加到app/appkernal.php中的行,则symfony demo应用程序毫无问题。

我已经运行app/check.php,我注意到以下警告:

WARNING  When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156
          Install PHP 5.3.8 or newer if your project uses annotations.

我目前正在使用ubuntu(5.3.5-1ubuntu7.11)发货的php版本,并且看起来像是作曲家/蒙古德b位,上面使用注释。

当我进行Google搜索时,我找不到任何明显的东西,并认为如果我的PHP版本确实是一个问题,这将更加普遍。

我可以告诉我需要的是:

  • 将php从源到升级到5.3.8
  • 汇编
  • install symfony2不使用作曲家,因为它看起来像安装mongodB捆绑包的旧方法不使用注释
  • 我完全错过了一些东西,因为我不知道Symfony2是如何工作的:D

有人有任何建议或其他解决方案会更容易吗?如果可以的话,我真的很想坚持作曲家。

我对PHP版本不了解(那里可能有问题,但是您发现的错误并没有明确说明),但是您的问题是丢失的配置在您的config.yml。

即使您现在不使用该服务,也必须添加它。它甚至不必是有效的信息,只需存在。

将以下内容添加到您的config.yml(从此处复制):

# app/config/config.yml
doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
    default_database: test_database
    document_managers:
        default:
            auto_mapping: true

Symfony与通过作曲家安装的Doctrinemongodbundle很好地搭配。使用作曲家安装依赖项,这是最佳实践。

您必须将PHP更新为5.4。

最新更新