在Doctrine2模型中为所有实体使用全局基础实体有哪些优缺点?
我正在考虑让所有我的域实体扩展单个通用基本实体,这样我就可以将关联的目标实体指定为基本实体类,从而允许该关联保持我域中的任何实体。
我的关联仍将尽可能具体:Order实体将包含Product对象,而不是Base对象。但是,通过定义与BaseEntity关联的LogItems和AuthorizationRules,而不是与特定项目相关联,可以非常一般地指定更像“元”类功能,如状态日志项,授权规范等。
我没有在任何地方看到这种方法,但似乎有一些用途或力量让所有类扩展出基础对象实体('Java风格')。但也许我不必要地过度复杂化了。
Doctrine2中的基础实体是个好主意吗?
答案 0 :(得分:0)
你在这里描述了所有内容:
http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html
您可以从OOP的角度(php)进行继承并将其映射到数据库(您可以让人员和员工也是人(或人))但您无法让数据库了解继承(它&# 39;在db抽象层(doctrine)中完成。)
因此,您可能希望拥有的每个类都必须是实体,这意味着个人和员工都必须是实体。如果您将其作为单表继承执行,则可以将实体与" Person"然后它也会包括员工。
http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html#single-table-inheritance http://martinfowler.com/eaaCatalog/singleTableInheritance.html