【问题标题】:Can YAML have inheritance?YAML 可以继承吗?
【发布时间】:2011-03-04 17:42:45
【问题描述】:

这个问题涉及到很多symfony,但是对于只知道YAML而不知道symfony的人来说应该很容易理解。

我的 symfony 模型来自三个步骤:首先,我在 MySQL 中创建表。其次,我运行 symfony 命令(symfony 学说:build-schema)将我的表结构转换为 YAML 文件。第三,我运行另一个 symfony 命令(symfony 学说:build-model)将 YAML 文件转换为 PHP 代码。

问题是:数据库中有一些表我不想在我的 symfony 代码中结束。例如,假设我有两张表:一张名为my_table,另一张名为wordpress。我最终得到的 YAML 文件可能如下所示:

MyTable:
  connection: doctrine
  tableName: my_table
Wordpress:
  connection: doctrine
  tableName: wordpress

这很好,只是 wordpress 表与我的 symfony 模型无关。结果是每次我对数据库进行更改并生成此 YAML 文件时,我都必须手动删除 wordpress。好烦!

我希望能够创建一个名为 baseConfig.php 的文件或类似这样的文件:

$config = array(
  'MyTable' => array(
    'connection' => 'doctrine',
    'tableName' => 'my_table',
  ),
  'Wordpress' => array(
    'connection' => 'doctrine',
    'tableName' => 'wordpress',
  ),
);

然后我可以有一个名为 config.php 的单独文件或我可以对基本配置进行修改的文件:

unset($config['Wordpress']);

所以我的问题是:有没有办法将 YAML 转换为可执行的 PHP 代码(而不是像 sfYaml::load() 那样将 YAML 加载到 PHP 代码中)来实现这种事情?或者是否有其他方法可以实现 YAML 继承? 谢谢, 杰森

【问题讨论】:

  • 您可能想考虑一下您是如何提出这个问题的。您已经想到了一个解决方案,并提出了相应的要求。询问根本问题可能会更好地为您服务:如何使 Doctrine 的模式构建器忽略某些表。

标签: php symfony1 yaml


【解决方案1】:

正确答案(据我所知):没有。

顺便说一下,这是我最终编写的插件: http://jasonswett.net/jsdoctrineschemaoverriderplugin/

【讨论】:

    【解决方案2】:

    另一种方法:

    我不确定 Symphony 是否会让你这样做,但 Doctrine supports hand-built schema files。您需要手动保持同步,但根据您更改表格的程度,这可能是可控的。

    【讨论】:

      猜你喜欢
      • 2014-06-04
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      相关资源
      最近更新 更多