多个实体的 EmailLog table

EmailLog table for multiple entities

我需要实现一个电子邮件日志 table,它将被一系列实体使用 - 每个实体都代表我们用来创建 "emailable" 文档的数据。

我如何使用 Symfony2 和学说在数据库中最好地模拟这种行为?字段太多,无法重用 EmailLog table,并且还计划了可能包括整体日志视图的功能。

假设我们有tables quote and order 这样的文档数据tables,对我来说最明智的似乎是

Company\Bundle\Entity\EmailLog:
  type: entity
  table: email_log
  id:
    id:
        type: integer
        nullable: false
        unsigned: false
        comment: ''
        id: true
        column: emlo_id
        generator:
            strategy: IDENTITY
  fields:
    created_at:
        type: datetime
        nullable: true
        fixed: false
        comment: ''
        default: ''
    to:
        type: string
        nullable: false
        length: 500
        fixed: false
        comment: ''

Company\Bundle\Entity\EmailLog:
  type: entity
  table: email_log_link
  id:
    id:
        type: integer
        nullable: false
        unsigned: false
        comment: ''
        id: true
        column: emlo_id
        generator:
            strategy: IDENTITY
  fields:
    quote_id:
        type: int
        nullable: true

    order_id:
        type: int
        nullable: true

有没有更好的数据库模型?

是否可以使用 PSR-3 记录器解决这个问题?

根据我在你的映射文件中看到的情况,你似乎在使用 Doctrine ORM。

您试图实现的目标可能被称为反模式,“The Alien”,一种存储在关系数据库中的对象类型,与其他实体的关系很少或没有关系。您只是将数据库用作持久性媒介。

为什么不将领域模型的这一部分转换为文档数据库?您将您的实体设计为简单的文档,并使用 Doctrine ODM 将它们映射到 Symfony。此外,将实际映射转换为 ODM 映射非常简单。