【问题标题】:How to config DoctrineMongoDBBundle in symfony 4.0如何在 symfony 4.0 中配置 DoctrineMongoDBBundle
【发布时间】:2018-04-01 07:28:45
【问题描述】:

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

Symfony 4 没有parameters.ymlconfig.yml

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

【问题讨论】:

    标签: mongodb symfony doctrine symfony-3.3 symfony4


    【解决方案1】:

    @jmleroux 的建议是对的

    要在 symfony 4.0 + php7.2.1 中安装 DoctrineMongoDBBundle,需要做一些额外的步骤。

    1. 在 composer.json 中添加以下内容

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

    请注意,"alcaeus/mongo-php-adapter": "^1.1" 仅在您使用 php7 时才需要

    1. 更新作曲家,确保没有错误发生
    2. 添加使用 Symfony\Bundle\FrameworkBundle\Controller\Controller; 到 yourcontroller 并从 controller 扩展您自己的控制器
    3. 按照@jmleroux 的建议去做

    【讨论】:

      【解决方案2】:

      这是我在 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
      

      在 php 配置文件中添加 mongodb 扩展

      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"
      

      在config/packages/doctrine.yaml中添加doctrine_mongodb配置

      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 Bundle 添加到 config/bundles.php

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

      最后一步

      composer update && composer install
      

      【讨论】:

        【解决方案3】:

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

        对于mongodb_server 参数,您可以在parameters 部分下的config/services.yml 中设置它,但最好使用像Doctrine configuration 这样的环境变量。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-02
          • 2020-02-15
          • 2012-01-09
          • 2018-08-25
          • 1970-01-01
          • 1970-01-01
          • 2019-02-05
          • 2019-01-26
          相关资源
          最近更新 更多