生成的 Doctrine 模型尊重大小写,但生成的 Yaml 不
Posted
技术标签:
【中文标题】生成的 Doctrine 模型尊重大小写,但生成的 Yaml 不【英文标题】:Generated Doctrine models respect case, but generated Yaml does not 【发布时间】:2010-12-14 08:11:03 【问题描述】:刚刚开始使用Doctrine ORM for php (v1.1.5) 并遇到了意想不到的事情。
我正在使用以下数据库(mysql 4)生成模型:
Doctrine::generateModelsFromDb($pathToModels);
然后使用以下模型从模型生成 YAML:
Doctrine::generateYamlFromModels($pathToSchema . '/schema.yml', $pathToModels);
在生成的模型中,列名(在hasColumn()
中定义)对字段使用与 db.xml 中相同的大小写。都很好。
但在生成的 YAML 中,列名都是小写的,与模型中的大小写无关。
generateYamlFromModels()
方法上似乎没有任何可用的选项可以用来调整它。我是否应该在某个地方设置其他属性,可能是在连接级别,或者在管理级别等?会不会是bug?
非常感谢任何想法。谢谢和欢呼!
【问题讨论】:
我看过问题***.com/questions/1501501/… ORM: Models not respecting case,但在其中一个答案中错过了这一点:至于字段名称,可以使用 YAML 模式文件的别名功能将它们映射到 camelCase(名称:user_id as userId)。那么,这就是全部吗?没有办法在 Yaml 生成中获得大小写尊重,但我可以手动调整YAML 使用别名? 看来 Doctrine_Table::setColumn() 将列名设置为小写是因为它没有在其中看到别名。 另一种选择是从 DB 生成模型,然后从模型生成 yaml。这个保留了正确的外壳。 @Dmitri Baltas:这似乎是最好的解决方法。因此,如果您将此移至答案,我会接受。 @edem:最初的问题可以追溯到 2009 年。不记得了,但当时可能是最新的。 【参考方案1】:
这似乎是一个错误。我这么说是因为 YAML is case sensitive 和 Doctrine 的 generateYAMLFromModels()
is documented to be case sensitive。我确实找到了 2.0 测试版中的 case sensitivity bug。也许这是影响您的程序的错误。不过,除此之外,Dimitris Baltas 的评论似乎是首选的解决方法:
另一种选择是从 DB 生成模型,然后从模型生成 yaml。这个保留了正确的外壳。
狩猎愉快:)
【讨论】:
以上是关于生成的 Doctrine 模型尊重大小写,但生成的 Yaml 不的主要内容,如果未能解决你的问题,请参考以下文章