Как настроить DoctrineMongoDBBundle в Symfony 4.0

Я пытаюсь использовать DoctrineMongoDBBundle в Symfony 4.0. Единственная документация, которую я могу найти, для Symfony 3.

Symfony 4 не имеет parameters.yml или config.yml.

Как я могу настроить Symfony 4.0, чтобы DoctrineMongoDBBundle работал?

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
1
0
527
3

Ответы 3

Конкретная конфигурация MongoDB теперь должна быть в отдельном файле на config/packages и иметь то же содержимое, что и SF3 app/config/config.yml.

Для параметра mongodb_server вы можете установить его в config/services.yml в разделе parameters, но лучше всего использовать переменную среды, например Конфигурация доктрины.

Предложение @jmleroux верно

Чтобы установить DoctrineMongoDBBundle в symfony 4.0 + php7.2.1, необходимо выполнить некоторые дополнительные действия.

  1. добавить следующее в composer.json

    • ** "alcaeus / mongo-php-адаптер":
    • «^ 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 и расширите свой собственный контроллер от контролер
  3. сделай то, что предложил @jmleroux

Вот шаги, которые я выполнил, чтобы запустить его в системе 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

Другие вопросы по теме