【问题标题】:Is it good practice extending database entity classes?扩展数据库实体类是一种好习惯吗?
【发布时间】:2017-06-12 20:43:58
【问题描述】:

我的 symfony 项目中有一个用户实体类。用户类包含身份验证所需的基本信息 - 用户名、密码、电子邮件等。但是我计划添加其他数据。比如体重、身高、喜欢的食物等。

在用户类中定义所有用户生物和数据是否是一种好习惯。还是应该使用另一个实体类(例如成员)扩展用户类,然后成员应该实现高级成员或管理员类?

如果是这样,实体类是否也应该包含具有业务逻辑的方法?

提前致谢

【问题讨论】:

    标签: symfony class doctrine entity


    【解决方案1】:

    您正在描述各种类型的polymorphism。如果您计划让多个相似的实体共享多个属性,那么这是一种非常聪明的方法。

    另外,当使用 Doctrine(作为 Symfony 应用程序的“标准”)时,您绝对不希望在您的实体中包含任何业务逻辑,除非绝对不存在其他解决方案(不太可能)。这是通过使用带有 Doctrine 的 DataMapper 模式而设计的,与带有 ORM(如 Eloquent (Laravel) 和 Ruby on Rails)的 ActiveRecord 模式形成对比。

    这篇文章很好地概述了 ActiveRecord 和 DataMapper 的区别;特别引用 Doctrine 和 Ruby on Rails 作为对比方法:https://pressupinc.com/blog/2014/11/orm-patterns-active-record-data-mapper/

    【讨论】:

      猜你喜欢
      • 2020-02-06
      • 2017-06-14
      • 2019-09-27
      • 1970-01-01
      • 2014-12-22
      • 2021-01-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      相关资源
      最近更新 更多