1

我有一个扩展供应商/CoreBundle 的 src/SiteBundle,我想在 SiteBundle schema.xml 中添加一个“标签”模型/表,而不复制 CoreBundle schema.xml。你说没问题?!呸!

如果 SiteBundle“标签”表有一个指向 CoreBundle 中定义的表的外键(例如 label.product_id),就会出现问题。Propel 拒绝构建“标签”模型,因为它认为它具有未解决的列依赖性。

有没有办法在构建时对两个 schema.xml 文件进行上下文化,以便 Propel 了解 SiteBundle 扩展了 CoreBundle?我想一个简单的 schema.xml 合并是我所追求的......

注意我已经研究了 Propel 的模式/模型继承概念,但是这些解决方案都不适合这个问题。

4

1 回答 1

0

事实证明,Propel Bundle确实让您可以在构建时将 schema.xml 文件上下文化,或者通过将两个 schema.xml 文件的包属性设置为相同的东西

<database name="site" namespace="Site\Bundle\Model" package="default">
    ...
</database>

或通过设置

propel.namespace.autoPackage: true

在此处推进构建属性文档。

然而,我的问题实际上来自一个简单的事实,我误解了 Symfony2 的包覆盖方法getParent()的工作原理。我的问题可以通过单独留下 Propel 配置 / 模式来最干净地解决;

  • 删除 SiteBundle::getParent() 方法,或者;
  • 在 SiteBundle 的 schema.xml 文件前加上一些东西(任何东西),以便 Propel 可以访问两个模式文件,尽管 getParent() 覆盖。
于 2013-06-07T15:02:11.247 回答