Symfony 4:如何在我的本地服务器中使用两个不同的环境

Symfony 4: how to use two different environments in my local server

我最近开始使用 Symfony 4。

在开发过程中,我喜欢有两种不同的环境:一种用于开发(使用我们在固定装置上的一些虚假数据浏览网站),另一种用于测试,我在其中执行 behat 测试,在每次测试时重置数据库。

在以前的 symfony 版本中,我只有两个不同的数据库:mysite_dev 和 mysite_test 以及两个具有正确数据库配置的参数文件(parameters_dev.yml 和 parameters_test.yml) .

但是对于 Symfony 4 和 .env 配置文件,我看不到这样做的方法。我看不到有两组 ddbb 参数并且能够 运行 php bin/console doctrine:schema:update --env=test 或 php bin/console doctrine:schema:update --env=dev.

有什么想法吗?谢谢!

这很简单:您的命令仍然可以使用 --env 引用一个环境,每次您需要从一个环境切换到另一个环境时,您基本上有两个选择:

  • 手动更改 .env 文件
  • 创建第二个 "vhost"(或等同物),您可以在其中存储您通常放入 .env 中的所有变量,如 here
  • 所述

如何在您的配置中使用不同的 url 变量?

# config/packages/dev/doctrine.yaml
doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL_DEV)%'

# config/packages/test/doctrine.yaml
doctrine:
    dbal:
        url: '%env(resolve:DATABASE_URL_TEST)%'

还要考虑默认配置文件中的这条评论

parameters:
    # Adds a fallback DATABASE_URL if the env var is not set.
    # This allows you to run cache:warmup even if your
    # environment variables are not available yet.
    # You should not need to change this value.
    env(DATABASE_URL): ''