我的symfony项目中有一个User Entity类。用户类包含身份验证所需的基本信息 - 用户名,密码,电子邮件等。但我计划添加其他数据。像重量,身高,喜欢的食物等。
在用户类中定义所有用户生物和数据是一种好习惯。或者是否应该使用另一个实体类(例如成员)扩展用户类,然后该成员应该实现高级成员或管理员类?
如果是这样,实体类是否还应包含具有业务逻辑的方法?
提前致谢
答案 0 :(得分:1)
您正在描述各种类型的polymorphism。如果您计划拥有多个共享多个属性的类似实体,那么这是一种非常聪明的方法。
另外,当使用Doctrine时(正如#34;标准"与Symfony应用程序一样),您绝对不希望在您的实体中包含任何业务逻辑,除非绝对不存在其他解决方案(不太可能)。这是设计使用带有Doctrine的DataMapper模式,而不是像Eloquent(Laravel)和Ruby on Rails这样的ORM的ActiveRecord模式。
本文很好地概述了ActiveRecord和DataMapper之间的区别;特别是将Doctrine和Ruby on Rails作为对比方法引用:https://pressupinc.com/blog/2014/11/orm-patterns-active-record-data-mapper/