doctrine:schema:update不检索生产配置?

时间:2013-09-06 14:25:47

标签: php symfony doctrine-orm

我在 app / config / config_prod.yml 中声明了配置,因此我可以在远程数据库上执行命令。

imports:
    - { resource: config.yml }
doctrine:
    dbal:
        driver:   %database_driver%
        host:     the-ip
        dbname:   the-database
        user:     the-user
        password: the-password

但是当我运行php app/console doctrine:schema:update --dump-sql -e=prod时,它仍然使用 parameters.yml 中的配置集。

Doctrine \ Bundle \ DoctrineBundle \ Command \ Proxy \ UpdateSchemaDoctrineCommand 中的var_dump($this->getApplication()方法中的execute显示正确的环境无法从获取配置config_prod.yml

public $parameters =>
  array(428) {
    ...
    'kernel.environment' =>
    string(4) "prod"
   ...
    'database_host' =>
    string(9) "127.0.0.1"

我是否遇到过错误,或者此命令无法处理不同的环境?

1 个答案:

答案 0 :(得分:1)

简短:您必须在prod环境中的每次配置更改后清除缓存。在开发环境中,每次请求都会重建缓存(某些部分不是)。但不是生产。

实际上,配置被编译到缓存中。在每个请求上从YAML / XML加载配置太重了。在getDefaultParameters()中查找方法app/cache/prod/appProdProjectContainer.php,您可以看到,所有配置参数都合并在一个巨大的数组中。

您会注意到,您在config.yml中配置的数组中的参数通常不相同。注入这些参数取决于bundle及其特定的扩展类。有关更多信息,请参阅Semantic Configuration