如何在symfony 4.0中配置DoctrineMongoDBBundle

时间:2018-04-01 07:28:46

标签: mongodb symfony doctrine symfony-3.3 symfony4

我正在尝试在 Symfony 4.0 中使用DoctrineMongoDBBundle。我能找到的唯一文档is for Symfony 3

Symfony 4 没有parameters.ymlconfig.yml

如何配置 Symfony 4.0 以使DoctrineMongoDBBundle正常工作?

3 个答案:

答案 0 :(得分:1)

@ jmleroux的建议是对的

要在symfony 4.0 + php7.2.1中安装DoctrineMongoDBBundle,应该完成一些额外的步骤。

  1. 将以下内容添加到composer.json

    • **" alcaeus /蒙戈-PHP-适配器":
    • " ^ 1.1"," doctrine / mongodb-odm-bundle":" ^ 3.0",
    • " doctrine / mongodb-odm":" ^ 1.2.0",**
  2. 请注意," alcaeus / mongo-php-adapter":" ^ 1.1"仅在您使用php7

    时才需要
    1. 更新作曲家,确保不会发生错误
    2. 添加使用Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller; 你的控制器并从控制器
    3. 扩展你自己的控制器
    4. 做@jmleroux建议的内容

答案 1 :(得分:0)

特定的MongoDB配置现在应该位于config/packages中的专用文件中,并且内容与SF3 app/config/config.yml相同。

对于mongodb_server参数,您可以在config/services.yml部分下的parameters中进行设置,但最好是使用Doctrine configuration之类的环境变量。

答案 2 :(得分:0)

这是我在debian系统上运行它的步骤。

设置php

apt-get update && apt-get install --assume-yes wget gnupg gnupg2

apt -y install lsb-release apt-transport-https ca-certificates
wget https://packages.sury.org/php/apt.gpg
apt-key add apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php7.4.list
apt-get update
apt-get install -y php7.2 php7.2-cli php7.2-common php7.2-dev php7.2-mysqli php7.2-xml php7.2-mbstring

设置pecl以安装mongodb驱动程序

apt-get install -y php-pear

安装mongodb驱动程序

pecl install mongodb

将mongodb扩展名添加到php配置文件中

echo "extension=mongodb.so" >> /etc/php/7.2/cli/php.ini

将依赖项添加到composer.json

"alcaeus/mongo-php-adapter": "^1.1",
"doctrine/mongodb-odm-bundle": "^3.0",
"doctrine/mongodb-odm": "^1.2.0"

将doctrine_mongodb配置添加到config / packages / doctrine.yaml

doctrine_mongodb:
    default_commit_options: ~
    auto_generate_proxy_classes: '%kernel.debug%'
    auto_generate_hydrator_classes: '%kernel.debug%'
    connections:
        default:
            server: '%env(MONGODB_URL)%'
            options: 
                username: '%env(MONGODB_USERNAME)%'
                password: '%env(MONGODB_PASSWORD)%'
    default_database: '%env(MONGODB_DB)%'
    document_managers:
        default:
            auto_mapping: true
            mappings:
                App:
                    is_bundle: false
                    type: annotation
                    dir: '%kernel.project_dir%/src/Document'
                    prefix: App\Document\
                    alias: App

将mongodb连接配置添加到.env文件

MONGODB_URL=mongodb://localhost:27017
MONGODB_DB=databasename
MONGODB_USERNAME=username
MONGODB_PASSWORD=password

将Doctrine MongoDb捆绑包添加到config / bundles.php

Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle::class => ['all' => true],

最后一步

composer update && composer install