Doctrine2生成:子类上的实体复制父类方法和属性

时间:2013-06-10 16:22:16

标签: php inheritance symfony doctrine-orm doctrine

我不久前开始使用symfony2和doctrine。我有两个具有JOINED继承类型的类(子类和父类)。连接似乎工作正常,但如果我运行 doctrine:generate:entities 在子类上,然后Doctrine将所有父类方法和属性添加到它。此外,它们都被声明为private,尽管它们在父类中是protected

由于某些原因,我不想将所有内容添加到子类中。主要是:

  • doctrine本身抱怨这个设置,说`protected`符号不能被重新声明为'private`。这可以防止生成SQL。
  • 我可能需要更改父类中的某些方法,并希望修改继续转移到子类。

所以问题是:

  1. 这种行为是正常还是因为我犯了错误?
  2. 我如何停止教义呢?我可能不会再在该类上运行`doctrine:generate:entities`但我很欣赏它所做的其他事情。
  3. 这是一个我不知道的设计模式吗?如果是这样的话,我对它的好处非常好奇,并且很高兴能够了解它。
  4. 感谢大家!

1 个答案:

答案 0 :(得分:1)

您遇到了Doctrine的限制,实体生成器无法生成具有继承的实体,如mentioned in the FAQ。您必须手动编辑它们。